我在这里阅读了十几篇帖子this one seemed closest,但对我来说并不是很清楚。
我在HTML5 Boilerplate上构建,虽然是自定义的Modernizr构建。我打算使用yepnope / modernizr.load功能进行条件加载。
H5BP中的.htaccess删除了Etags并添加了expires头(我猜想Modernizr.load需要expires头)。它还设置了“访问加X”的到期
这有助于充分利用缓存来“加快”浏览体验。是否会在每个页面上加载满足条件的每个资源,或者是否会跳过缓存的内容?
如果只更改了其中一个组件(我正在加载的资源之一),但是我的Modernizr版本没有更改呢?
发帖后我意识到这可能更适合网站管理员论坛(问题中没有实际的代码......)但我想我不确定是否会有一个涉及代码的答案,所以现在,我让它意识到它应该被迁移。对不起,这种级别的编码和配置对我来说是新的。
由于
答案 0 :(得分:0)
每个资源都是独立缓存的。因此,如果您加载名为foo.js
的javascript文件,此文件将缓存一年:https://github.com/h5bp/html5-boilerplate/blob/master/.htaccess#L245
如果您将modernizr脚本更改为新版本,则不会更改foo.js
的缓存结束日期,这将保持不变。
为了破坏缓存,您需要更改文件名(例如:foo-v1234123.js
),路径或您可以添加查询字符串(foo.js?v=1
)。如果您对foo.js
进行了更改,则只需将此版本号增加一个,以强制浏览器重新下载该文件并对其进行重新缓存。
如果您正在处理一个简单的网站而没有大项目,那么使用查询字符串手动执行此操作可能是更容易的解决方案。或者,我建议通过git
或类似的方式挂钩版本号 - 但这需要自动化以保证您的理智。
希望这有帮助!