强制移动设备更新其缓存

时间:2012-03-29 22:56:51

标签: javascript css jquery-mobile mobile-website

我注意到Android和Android上的缓存Apple设备可能非常密集,下周我们将推出一个jquerymobile网站投入生产,我需要确保能够清除用户的缓存..

我尝试在JS,CSS资源的查询字符串中添加一个增量数字,比如?v = 2 e.t.c这似乎工作得体,但也发现有时不工作......

有没有人有任何想法?清单?

3 个答案:

答案 0 :(得分:0)

我一直使用缓存清除查询字符串来强制从服务器加载新副本。

您也可以使用<HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">,但(理论上)将消除页面上的所有缓存,而不仅仅是更新发生时。

答案 1 :(得分:0)

将GET变量添加到资产的来源将适用于单个资产,但如果整个页面被缓存,则将找不到新的变量值,并且将加载所有缓存的资产。

所以也许您可以禁用索引页面的缓存,这样如果您更改资源的来源,每次用户查看索引页面时都会反映出来。

我相信你也可以使用缓存清单告诉浏览器不缓存某些资产:http://www.html5rocks.com/en/tutorials/appcache/beginner/

答案 2 :(得分: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