Skip to main content

Flex Cache Problem

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.

<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.

Comments

  1. It is working fine with firefox But there is problem with IE.

    ReplyDelete
  2. We can also avoid flex cache problem using meta tags..

    ReplyDelete

Post a Comment