青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

麒麟子

~~

導航

<2013年5月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

統計

常用鏈接

留言簿(12)

隨筆分類

隨筆檔案

Friends

WebSites

積分與排名

最新隨筆

最新評論

閱讀排行榜

評論排行榜

瀏覽器緩存導致FLASH資源更新問題的解決方案

 

在網上搜瀏覽器緩存問題時,遇上了很多問題。一是不知道應該用何種關鍵字搜索,二是一搜出來,就全是講的是如何禁用瀏覽器緩存的方案。

 

作為大型點的FLASH WEBGAME來說,不緩存顯然是不行的??傮w上來說,我們要想達到的目標就是

一、瀏覽器需要緩存

二、當服務器資源更新時,瀏覽器緩存里相應的老版本資源失效。

 

下面兩篇文章講到了一個很好的解決方案,并且給出了源碼。。

 

更新文件避免瀏覽器緩存的解決方案(基于svn)

 

http://www.itamt.com/2010/06/browser_cache_prevent_base_on_svn/

 

 

更新文件避免瀏覽器緩存的解決方法(源碼)

 

http://www.itamt.com/2010/07/file-revision-prevent-browser-cache-svn/#comment-163

 

 

由于作者BLOG上的代碼無法下載,并且作者的實現與第一篇中描述的略有差異,于是我試著留言給作者。熱心的作者當天就給了我回復。

以下是我整理后的回復內容:

你好, 關于你說的:
1 、你最后的方案是不是 僅僅在資源請求時,追加一個版本號?  我發現IE瀏覽器緩存是將整個請求URL緩存下來了的。也就是說,版本號也緩存了。 這樣,當我們使用版本號請求資源時,就可以實現總是得到服務器上的資源了。
2、IE和Firefox的緩存機制差異有多大?  主要是緩存后的URL路徑上。。。

我把我的想法說一下, 盡量表述清楚-_-:

不管IE和Firefox瀏覽器緩存都是將整個請求url緩存下來的. 而我的解決方案本質與你說的是一樣的, 即"僅僅在資源請求時,追加一個版本號".

一般的做法,發布新版本時,比如v1.5,我們大可以在所有資源請求都加上"....?v=1.5", 這樣做沒有錯.肯定是會避免瀏覽器緩存的.

問題是:這種方法會重新請求所有的資源. 而項目發布的通常情況是:只有少部分資源有修改. 所以這種方法是很浪費帶寬的, 也加重了服務器的壓力. 理想的情況就是:只重新請求那些被修改過的資源.

下面表述一下我的解決方案:
假設現在項目是v1.0, 我們要發布v1.5上去. 我們利用SVN產生一份文件, 來記錄v1.5中所有資源的SVN版本號. 當請求一個資源時, 追加這個資源的SVN版本號. 如果一個資源(比如: icon.jpg, SVN版本號是1010)在v1.5中沒有被修改, 那么它的SVN版本號與在v1.0的SVN版本號肯定是一樣的都是1010:
在v1.0中,瀏覽器請求icon.jpg的url是:http://.....icon.jpg?svn=1010
在v1.5中,瀏覽器請求icon.jpg的url是:http://.....icon.jpg?svn=1010, 這時候會直接從瀏覽器緩存中取出. 不會重新請求.

如果v1.5中一個資源(比如: logo.jpg, SVN版本號是1234)是修改過的, 它在v1.0的SVN版本號是1222, 請求資源時:
在v1.0中,瀏覽器請求icon.jpg的url是:http://.....logo.jpg?svn=1222
在v1.5中,瀏覽器請求icon.jpg的url是:http://.....logo.jpg?svn=1234, 這時候與瀏覽器緩存中的請求是不一樣的. 所以會重新向服務端請求.

思路就是這樣的. 所以關鍵是利用SVN來記錄的版本號請求資源.

這個解決方案最終實現出來主要是兩個文件.
1.cur.txt記錄整個項目當前的SVN版本號.
2.revision.txt記錄項目當前版本中所有資源的SVN版本號.

整個項目程序一開始(Preloader.swf), Preloader.swf會先確定整個項目SVN版本號(加載最新cur.txt, 或者在網頁中指定:...Preloader.swf?cur=20), 然后根據整個項目SVN版本號加載revision.txt, 比如現在項目SVN版本是20, 那么Preloader.swf會加載:
http://.....revision.txt?svn=20
加載完成后, 就可以完成mFileRevisionManager的初始化...

注意Preloader.swf不是進度條(load.swf), 它是整個項目最開始的地方, 所以應該盡可能小, 而且一旦完成最不要再去修改它.

附件里,有我做的demo. 我的開發環境是FDT4.5+Flash CS5.5, 文件夾tool里一個ant腳本, 和jsfl腳本. 使用時你需要修改publish.xml開頭的路徑. 然后運行這個ant腳本.

 image

運行ant前, 注意設置下:這樣ant運行期間的輸出信息會顯示在eclipse里.

image

 

---------------------------------------------------------------

并且,我問了一下他對Preloader.swf的理解和用法

回復:

結合我參與的項目,說一下Preloader.swf是干么用的:
一般項目肯定會有一個load.swf和main.swf, 其中
1.load.swf用于顯示加載main.swf的進度,說白了load.swf就是個進度條.
2.main.swf就是整個項目的主程序.
而Preloader.swf是在load.swf之前加載的.也就是說加載順序是Preloader.swf->load.swf->main.swf
Preloader.swf主要用來加載"資源版本號文件"(revision.txt, cur.txt). 并且把整個資源版本機制初始化(在我的方案里就是mFileRevisionManager).

當然, 也完全可以把Preloader.swf并入load.swf(進度條)中. 但我的經驗是load.swf(進度條)其實是經常需要修改更新的. 而且為了重用性考慮, 我會把Preloader.swf用于不同的項目中. 所以把Preloader.swf與load.swf分開.

 

 

-----------------------------分割線--------------------------------

而考慮到目前項目的原因,我們決定暫時采用一個很簡單的方案。 就是在資源的根目錄下加版本號。

比如 1.0.0版本的資源目錄為

Assets_v1.0.0

我要加載一個ui.swf的URL就是  “Assets_v1.0.0/ui.swf”

而當版本更新時,比如到了1.0.1

我要加載一個ui.swf的URL就是 “Assets_v1.0.1/ui.swf”

 

這樣就像回復內容中說的,這會使瀏覽器緩存中所緩存的所有資源都失效。 雖然是如此,但總比用戶繼續使用老版本資源好。 并且,對于一個發布版的更新總會有時間間隔的,不會一天到晚都是這樣的情況。

而待項目趨于穩定后,再集中替換成上面那種最小資源更新的解決方案。

 

 

希望上面的信息能夠幫助到和我一樣迷惑的人。如果這些信息幫助到了你,請去參拜本文開頭引用的兩篇文章的作者,謝謝?。。。。?!

posted on 2013-02-22 22:35 麒麟子 閱讀(296) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美成人精品在线视频| 国产精品美女久久久久久久| 亚洲精品视频在线观看免费| 欧美高潮视频| 亚洲国产日韩欧美在线动漫| 麻豆精品在线观看| 亚洲免费中文字幕| 亚洲人成精品久久久久| 蜜桃av久久久亚洲精品| 欧美电影免费观看高清完整版| 久久亚洲精品网站| 欧美成人免费全部观看天天性色| 欧美国产综合视频| 亚洲精品资源| 亚洲免费在线播放| 久久五月婷婷丁香社区| 欧美成人黄色小视频| 欧美亚韩一区| 韩国亚洲精品| 夜夜精品视频| 欧美一级黄色录像| 牛夜精品久久久久久久99黑人| 亚洲人www| 久久精品欧美| 欧美日韩在线播放| 国内精品久久久| 99re热这里只有精品视频| 午夜在线电影亚洲一区| 欧美韩日精品| 欧美一级一区| 欧美日韩精品不卡| 国产麻豆精品theporn| 国内精品写真在线观看| 亚洲日本一区二区| 性欧美18~19sex高清播放| 免费久久久一本精品久久区| 亚洲电影欧美电影有声小说| 亚洲一区免费网站| 免费视频一区| 国产亚洲va综合人人澡精品| 亚洲欧洲日产国产网站| 性一交一乱一区二区洋洋av| 老司机午夜精品视频在线观看| 亚洲国产另类久久久精品极度| 亚洲一区二区在| 美女爽到呻吟久久久久| 欧美天堂亚洲电影院在线播放| 韩日视频一区| 亚洲视频专区在线| 欧美不卡一区| 欧美一区二区三区免费观看视频| 欧美日韩hd| 在线精品观看| 久久噜噜亚洲综合| 亚洲已满18点击进入久久| 欧美xart系列高清| 国内不卡一区二区三区| 欧美在线视频日韩| 日韩视频在线观看一区二区| 蜜桃久久av一区| 尤物精品在线| 美女日韩欧美| 久久精品国产综合精品| 免费在线成人| 久久国产综合精品| av成人毛片| 欧美精品在线观看91| 亚洲动漫精品| 女人色偷偷aa久久天堂| 欧美一区二区视频在线观看2020| 国产乱码精品一区二区三区不卡 | 女同性一区二区三区人了人一| 亚洲性感美女99在线| 欧美午夜电影完整版| 99精品国产在热久久下载| 欧美福利电影网| 久久青草久久| 亚洲国产精品一区制服丝袜| 女人天堂亚洲aⅴ在线观看| 久久综合九色综合欧美就去吻 | 亚洲天堂视频在线观看| 亚洲欧洲精品一区二区三区| 免费成人毛片| 日韩亚洲在线| 一本到12不卡视频在线dvd| 欧美日韩精品三区| 亚洲私人影院在线观看| 亚洲午夜三级在线| 国产日韩欧美a| 免费久久精品视频| 亚洲一区三区电影在线观看| 国产伦精品一区二区三| 久久精品一本久久99精品| 久久成人综合视频| 亚洲国产合集| 亚洲人成久久| 国产精品视频最多的网站| 性欧美大战久久久久久久久| 欧美一区二区三区免费视频| 在线观看视频亚洲| 亚洲精品久久久久中文字幕欢迎你| 毛片基地黄久久久久久天堂| 亚洲精品日韩久久| 亚洲视频欧美视频| 黄色一区三区| 日韩亚洲精品在线| 国产亚洲精品bv在线观看| 欧美成人免费小视频| 欧美激情亚洲国产| 午夜宅男久久久| 久久综合网hezyo| 亚洲视频一区在线观看| 欧美在线视频观看| 一本综合精品| 久久精品国产99国产精品| 亚洲精品国产精品久久清纯直播| 一本色道久久加勒比88综合 | 日韩一区二区精品葵司在线| 亚洲一区www| 在线日韩av片| 亚洲专区一区二区三区| 欧美91大片| 韩国一区电影| 日韩午夜剧场| 亚洲经典在线看| 欧美在线资源| 欧美在线一二三四区| 欧美精品自拍| 欧美大片免费| 激情丁香综合| 性做久久久久久久免费看| 99国产一区二区三精品乱码| 久久精品免视看| 欧美在线日韩精品| 欧美三日本三级少妇三99| 亚洲二区在线观看| 好吊视频一区二区三区四区| 中文精品一区二区三区| 夜夜嗨av一区二区三区中文字幕| 久久免费视频网站| 久久久水蜜桃| 加勒比av一区二区| 亚洲欧美亚洲| 欧美在线视频不卡| 国产区二精品视| 狠久久av成人天堂| 蜜臀av性久久久久蜜臀aⅴ| 久久一二三区| 精品成人免费| 久久久久久**毛片大全| 乱中年女人伦av一区二区| 国产在线不卡| 久久久777| 欧美成人免费观看| 亚洲国产精品一区二区第四页av| 久久久水蜜桃av免费网站| 另类亚洲自拍| 亚洲国产小视频| 男人的天堂成人在线| 亚洲电影在线看| 99视频一区| 国产精品乱子久久久久| 亚洲综合色视频| 久久久www成人免费精品| 国产一区二区日韩精品| 久久久视频精品| 日韩视频免费| 亚洲综合日韩中文字幕v在线| 国产精品国产精品国产专区不蜜| 亚洲图片你懂的| 久久久av水蜜桃| 亚洲精品乱码久久久久久黑人 | 亚洲另类在线视频| 亚洲一区二区免费视频| 国产视频欧美视频| 久久婷婷国产综合精品青草| 亚洲国产一区二区三区a毛片| 99re热这里只有精品视频| 国产伦理一区| 欧美a级一区二区| 在线亚洲美日韩| 久久伊人精品天天| 夜夜嗨av一区二区三区| 国产亚洲成av人在线观看导航| 欧美一二三视频| 99国产成+人+综合+亚洲欧美| 久久免费精品视频| 亚洲欧美日韩精品久久奇米色影视| 亚洲欧美在线高清| 在线观看国产精品网站| 欧美三区美女| 麻豆国产精品777777在线 | 羞羞答答国产精品www一本| 欧美大片在线看| 亚洲欧美日韩一区二区三区在线观看 | 国产主播一区二区三区四区| 欧美 日韩 国产精品免费观看| 日韩一级网站| 欧美电影在线观看完整版| 午夜精品国产|