我注意到Android和Android上的缓存Apple设备可能非常密集,下周我们将推出一个jquerymobile网站投入生产,我需要确保能够清除用户的缓存..
我尝试在JS,CSS资源的查询字符串中添加一个增量数字,比如?v = 2 e.t.c这似乎工作得体,但也发现有时不工作......
有没有人有任何想法?清单?
答案 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