swf 更新後,客戶端不需要清空緩存即可查看最新版本

[size=large][color=indigo]我們在用Flex開發應用的時候,每次修改了swf,上傳到服務器後,測試都需要清空緩存。這樣很麻煩,另外如果以後版本更新了,但是用戶沒有清空緩存的話仍然看不到最新版本。所以在這裏說一下解決方案。



其實這都是因爲緩存的問題,大家都知道,Flash插件也使用與HTML頁面類似的方法緩存swf文件,節省我們每次導入swf文件的時間,這是個很好的策略,但是對於我們有新版本swf文件發佈的時候,這個緩存的機制就不怎麼可愛了,swf中有沒有什麼特別的參數可以不緩存,而且對於Flex這樣的胖客戶端,不緩存對於用戶體驗也是不利的,這可如何是好?!

還好問題還是有解決的辦法的,我們可以從緩存的根本下手,一般緩存都是基於URL的,也就是說對同一個URL的訪問,有一個緩存的機制在這裏,而對於不同的URL,也就必須讀入新的swf重新緩存了。

具體解決方案如下:

1.在Flex的模板文件夾下面的index.template.html文件是最終生成html的模板文件,修改這個頁面的緩存方式爲“不緩存”(因爲html頁面的數據不大,所以每次都讀取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這個方法,這個方法會調用AC_GetArgs方法,AC_GetArgs方法的第二個參數默認是".swf"。將這個參數修改爲".swf?ver=1.0"。問號後面的參數不是固定的,可以自己隨便起,目的就是把url區分開,從而達到用戶每次請求看到的都是最近版本的目的。

以上兩步做好之後編譯保存,如果以後swf文件被修改了,只需要修改服務器上的AC_OETags.js文件就可以了。修改方法按照第二步操作。[/color][/size]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章