天天看點

關于清理webgame緩存的問題

看看來浏覽器對重新整理的處理方式。以ie為例(安裝的httpwatch)

關于清理webgame緩存的問題

上面所謂的直接請求,是直接在位址欄輸入網址,然後回車(有的浏覽器上有“轉到”按鈕),或者通過超連結打開網頁。

而重新整理則是點選“重新整理”按鈕,或者按F5 /右鍵點選“重新整理”,則會向伺服器發起請求并帶上上一次伺服器傳回的資源修改資訊。

關于清理webgame緩存的問題
關于清理webgame緩存的問題
關于清理webgame緩存的問題

http的請求頭部裡面帶上了If-Modified-Since和If-None-Math(伺服器傳回的E-Tag标記),關于Last-Modified和E-Tag的差別,可自行谷歌搜尋。

而強制重新整理—Ctrl + F5,則不會帶上上一次請求的資訊,所有的資源都向伺服器發起一個“全新”的請求,并重新下載下傳資源

關于清理webgame緩存的問題
關于清理webgame緩存的問題

Chrome浏覽器表現和ie基本上是一緻的,唯一比較大的差別在于,直接請求時,它狀态碼依然為200(但是是from cache)。

關于清理webgame緩存的問題
關于清理webgame緩存的問題

這個請求根本就沒有發送出去>_<

上面分析了:直接通路、重新整理、強制重新整理它們之間的差別,現在講一下,我所經曆的項目中(webgame)所遇到的問題。

早些年的時候,做網頁基本上都是asp,如今是php占據了半壁江山。近幾年,主流的webgame前台表現主要采用flex/as3,後端開發語言主要有:java、php、c++,還有一些是用其它語言的,但并不是主流。而遊戲一般是獨立的遊戲伺服器,與網站的web伺服器是分開的,充值、登入、注冊可能都是分開的。

一般進入遊戲,先登入網站,然後點選一個遊戲連結,跳轉到一個動态請求接口,這個接口根據剛才送出過來的參數,然後輸出一些參數(有資源的版本号,還有session資訊、遊戲内連結的網址,請求資源的cdn位址…),然後加載swf,傳入相應的參數。

基本上所有的遊戲資源都走的是cdn(除一些特殊的配置檔案,需要動态更新外--不停服),而CDN最麻煩的就是要解決緩存的問題,就是需要請求最新的檔案内容覆寫已有的緩存。而as3的請求裡面,是不能設定一些http頭資訊的,比如 If-Modified-Since、Cache-control等等…後來看到QQ空間有類似的一個“服務”,就是利用ajax,發起get請求,隻是在頭部裡面寫If-Modified-Since,來更新緩存檔案内容。

把頁面放到cdn上(避免跨域請求出現不必要的麻煩),根據遊戲加載的資源和版本号控制檔案,組合成遊戲加載的資源路徑,然後通過ajax進行請求資源,并顯示更新結果…

關于清理webgame緩存的問題
關于清理webgame緩存的問題

最後整理一下,收集到的關注清空浏覽器緩存的指南:

<a href="http://ctc.qzs.qq.com/qzone/vas/app/app_canvas/clinic.htm" target="_blank">http://ctc.qzs.qq.com/qzone/vas/app/app_canvas/clinic.htm</a>

清空常用浏覽器緩存的操作(沒有寫360 ~ ~!,其實用360的使用者還蠻多的)

(檢測flash player是否安裝以及gif動畫是否浏覽正常,估計很久都沒有更新了,是以裡面一些資訊和排版還是有些不盡人意的地方)

提到webgame,不得不提及flash player,但偏偏這玩意就是很讓人疼蛋,經常更新不說,解除安裝、安裝還有點小麻煩。貼出兩個位址,一般情況下也夠用了,如果遇到了問題,可以發E-mail(部落格左上角)給我~

網上很多資源已經非常豐富了,比如javascript的HashChange、Cross-Domain和Web Storage這些問題的解決方案已經很多了,很多時候要做的隻是怎麼樣去好好利用這些資源來解決我們面臨的問題和困難,發明輪子這玩意暫時不太适合我這種小作坊式的開發&gt;_&lt;