There is very big problem in flex that's cache problem. When I was developing a Rich Internet application. I faced flex cache problem in Internet Explore & Firefox browser i was stuck badly.
Then I wrote this code for avoiding flex cache problem & i think it works a bit. Well still working on it.
I have added this code into index.template.html which is located into flex project html-template/index.template.html.
Changes which i made in swf javascript code.
Httpservice not refreshing there's another point of flex cache. Some time Httpservice does not show refresh result in second time so we just use a parameter which we can send into with Httpservice Request.
Flex Function
above code genrate unique number every request genrate new unique number and browser takes this url as a new url in every request. we can implement it.
so it will return you always refresh result.
Then I wrote this code for avoiding flex cache problem & i think it works a bit. Well still working on it.
I have added this code into index.template.html which is located into flex project html-template/index.template.html.
<Script Language="javascript">
var url = location.href;
var ots = parseInt(url.substring(url.indexOf("=")+1,url.length))+6000;
var dt = new Date();
var n = dt.getTime();
if(url.indexOf("?timeStamp=")!=-1)
{
if(isNumber(ots) && ots!=""){
 if(nts>ots){
     location.href=url.substring(0,url.indexOf("?"))+"?timeStamp="+nts;
 }
}else{
 location.href=url.substring(0,url.indexOf("?"))+"?timeStamp="+newTimeStamp;
}
}else{
location.href=url.substring(0,url.indexOf("?"))+"?timeStamp="+nts;
}
function isNumeric(val)
 {
  var vc = "0123456789.";
  var isnum=true;
  var c;
  for (i = 0; i < val.length && isnum == true; i++) 
  { 
   c = val.charAt(i); 
   if (vc.indexOf(c) == -1) 
   {
    isnum = false;
   }
  }
  return isnum;
   }
</Script>Changes which i made in swf javascript code.
<script language="JavaScript" type="text/javascript">
<!--
// Version check for the Flash Player that has the ability to start Player Product Install (6.0r65)
var hasProductInstall = DetectFlashVer(6, 0, 65);
// Version check based upon the values defined in globals
var hasRequestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
if ( hasProductInstall && !hasRequestedVersion ) {
   // DO NOT MODIFY THE FOLLOWING FOUR LINES
   // Location visited after installation is complete if installation is required
   var MMPlayerType = (isIE == true) ? "ActiveX" : "PlugIn";
   var MMredirectURL = window.location;
   document.title = document.title.slice(0, 47) + " - Flash Player Installation";
   var MMdoctitle = document.title;
   AC_FL_RunContent(
       "src", "playerProductInstall",
       "FlashVars", "MMredirectURL="+MMredirectURL+'&MMplayerType='+MMPlayerType+'&MMdoctitle='+MMdoctitle+"",
       "width", "${width}",
       "height", "${height}",
       "align", "middle",
       "id", "${application}",
       "quality", "high",
       "bgcolor", "${bgcolor}",
       "name", "${application}",
       "allowScriptAccess","sameDomain",
       "type", "application/x-shockwave-flash",
       "pluginspage", "http://www.adobe.com/go/getflashplayer"
   );
} else if (hasRequestedVersion) {
   // if we've detected an acceptable version
   // embed the Flash Content SWF when all tests are passed
   AC_FL_RunContent(
           "src", "${swf}"+"?run="+newTimeStamp,
           "width", "${width}",
           "height", "${height}",
           "align", "middle",
           "id", "${application}",
           "quality", "high",
           "bgcolor", "${bgcolor}",
           "name", "${application}",
           "allowScriptAccess","sameDomain",
           "type", "application/x-shockwave-flash",
           "pluginspage", "http://www.adobe.com/go/getflashplayer"
   );
 } else {  // flash is too old or we can't detect the plugin
   var alternateContent = 'Alternate HTML content should be placed here. '
     + 'This content requires the Adobe Flash Player. '
      + '<a href=http://www.adobe.com/go/getflash/>Get Flash</a>';
   document.write(alternateContent);  // insert non-flash content
 }
// -->
</script>Httpservice not refreshing there's another point of flex cache. Some time Httpservice does not show refresh result in second time so we just use a parameter which we can send into with Httpservice Request.
Flex Function
public static function uniqueNum():String{
   var d:String = new Date().getDate().toString();
   var m:String = new Date().getMonth().toString();
   var y:String = new Date().getFullYear().toString();
   var h:String = new Date().getHours().toString();
   var mm:String = new Date().getMinutes().toString();
   var s:String = new Date().getSeconds().toString();
   var unique:String = d + m + y + h + mm + s ;
   return unique;
}above code genrate unique number every request genrate new unique number and browser takes this url as a new url in every request. we can implement it.
httpservice.url = "index.php";
httservice.send(num:uniqueNum);
so it will return you always refresh result.
It is working fine with firefox But there is problem with IE.
ReplyDeleteWe can also avoid flex cache problem using meta tags..
ReplyDelete