我們在用Flex開(kāi)發(fā)應用的時(shí)候,每次修改了swf,上傳到服務(wù)器后,測試都需要清空緩存。這樣很麻煩,另外如果以后版本更新了,但是用戶(hù)沒(méi)有清空緩存的話(huà)仍然看不到最新版本。所以在這里說(shuō)一下解決方案。
其實(shí)這都是因為緩存的問(wèn)題,大家都知道,Flash插件也使用與HTML頁(yè)面類(lèi)似的方法緩存swf文件,節省我們每次導入swf文件的時(shí)間,這是個(gè)很好的策略,但是對于我們有新版本swf文件發(fā)布的時(shí)候,這個(gè)緩存的機制就不怎么可愛(ài)了,swf中有沒(méi)有什么特別的參數可以不緩存,而且對于Flex這樣的胖客戶(hù)端,不緩存對于用戶(hù)體驗也是不利的,這可如何是好?!
還好問(wèn)題還是有解決的辦法的,我們可以從緩存的根本下手,一般緩存都是基于URL的,也就是說(shuō)對同一個(gè)URL的訪(fǎng)問(wèn),有一個(gè)緩存的機制在這里,而對于不同的URL,也就必須讀入新的swf重新緩存了。
具體解決方案如下:
1.在Flex的模板文件夾下面的index.template.html文件是最終生成html的模板文件,修改這個(gè)頁(yè)面的緩存方式為“不緩存”(因為html頁(yè)面的數據不大,所以每次都讀取Server中的內容是可以容忍的)。在此文件的<head></head>之間加上如下代碼:
<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<META HTTP-EQUIV="expires" CONTENT="0">注意:<head></head>之間原有的代碼不要修改!
2.修改AC_OETags.js文件。在此文件中找到AC_FL_RunContent這個(gè)方法,這個(gè)方法會(huì )調用AC_GetArgs方法,AC_GetArgs方法的第二個(gè)參數默認是".swf"。將這個(gè)參數修改為".swf?ver=1.0"。問(wèn)號后面的參數不是固定的,可以自己隨便起,目的就是把url區分開(kāi),從而達到用戶(hù)每次請求看到的都是最近版本的目的。
以上兩步做好之后編譯保存,如果以后swf文件被修改了,只需要修改服務(wù)器上的AC_OETags.js文件就可以了。修改方法按照第二步操作。
聯(lián)系客服