2012-03-29 71 views
0

我注意到了Android上的緩存&蘋果設備可能非常密集,我們將在下週推出一個jquerymobile網站投入量產,並且我需要確保我有能力清除緩存的用戶..強制移動設備更新緩存

我試着向JS,CSS資源的查詢字符串添加一個增量數字,就像?v = 2等似乎是正常工作,但也發現有時不工作..

有沒有人有任何想法?表現?

+0

在哪些瀏覽器上有版本cache-buster參數失敗? – 2012-03-29 22:59:34

回答

0

我一直使用cache-busting查詢字符串強制從服務器加載新副本。

您也可以使用<HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">,但是(理論上)將擺脫頁面上的所有緩存,而不僅僅是更新發生時。

0

將GET變量添加到您的資源的源將適用於單個資產,但是如果整個頁面被緩存,那麼將不會找到新的變量值,並且將加載所有緩存的資產。

所以,也許你可以禁用索引頁面的緩存,所以如果你改變資源的來源,每當用戶查看索引頁時,它都會被反映出來。

我相信你也可以使用清單高速緩存告訴瀏覽器不緩存某些資產:http://www.html5rocks.com/en/tutorials/appcache/beginner/

0

我聽說在查詢字符串被忽略的改變index.js情況下V = 3的喜歡的東西? index.3.js然後你可以用.htaccess重定向。

這裏是一個整潔的方式H5BP處理這跟的.htaccess和時間戳:

<IfModule mod_rewrite.c> 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.+)\.(\d+)\.(js|css|png|jpg|gif)$ $1.$3 [L] 
</IfModule> 

這將所有請求路由到/path/filename.20120101.ext到/path/filename.ext。那麼你將不得不在你的文件名中包含一個時間戳,如index.20120329.js,它將重定向到index.js