Javascript 强制移动设备更新其缓存
我注意到Android和Apple设备上的缓存可能非常密集,我们下周将推出一个jquerymobile网站投入生产,我需要确保我有能力清除用户的缓存 我曾尝试在JS、CSS资源的查询字符串中添加一个增量数字,比如?v=2e.t.c,它似乎工作正常,但也发现有时不工作Javascript 强制移动设备更新其缓存,javascript,css,jquery-mobile,mobile-website,Javascript,Css,Jquery Mobile,Mobile Website,我注意到Android和Apple设备上的缓存可能非常密集,我们下周将推出一个jquerymobile网站投入生产,我需要确保我有能力清除用户的缓存 我曾尝试在JS、CSS资源的查询字符串中添加一个增量数字,比如?v=2e.t.c,它似乎工作正常,但也发现有时不工作 有人有什么想法吗?清单?我一直使用缓存破坏查询字符串强制从服务器加载新副本 您也可以使用,但这(理论上)将消除页面上的所有缓存,而不仅仅是在更新发生时。将get变量添加到资产的源将适用于单个资产,但如果缓存整个页面,则找不到新的变量
有人有什么想法吗?清单?我一直使用缓存破坏查询字符串强制从服务器加载新副本
您也可以使用
,但这(理论上)将消除页面上的所有缓存,而不仅仅是在更新发生时。将get变量添加到资产的源将适用于单个资产,但如果缓存整个页面,则找不到新的变量值,并且将加载所有缓存的资产
因此,也许您可以禁用索引页的缓存,这样,如果您更改资产的源,它将在用户每次查看索引页时反映出来
我相信您也可以使用缓存清单告诉浏览器不要缓存某些资产:我听说过这样的情况,即查询字符串被忽略,将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>
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^(.+)\(\d+)\(js | css | png | jpg | gif)$$1.$3[L]
这将把所有请求路由到/path/filename.20120101.ext到/path/filename.ext。然后,您必须在文件名中包含一个时间戳,如index.20120329.js,它将重定向到index.js在哪些浏览器上版本缓存buster参数失败?