【问题标题】:Javascript - Load new cache on deployJavascript - 在部署时加载新缓存
【发布时间】:2017-10-22 08:10:12
【问题描述】:

我想在每次部署我的页面时加载我的 javascript、css、html 等的新版本。我看到我可以将?<version> 添加到脚本的 src 链接中,还有其他新的/更可靠的方法吗?

更新 我正在寻找类似变量的东西,如果加载了新文件,我可以自动更新 URL,而不是手动重命名文件。这可能吗?

【问题讨论】:

标签: javascript php css caching


【解决方案1】:

将资源的最后编辑时间添加到资源元素的 src/href,或者如果您链接到可能包含子目录等的聚合脚本,则添加所有相关时间的 MD5。

http://verens.com/2008/04/09/javascript-cache-problem-solved/

【讨论】:

  • 谢谢,所以如果我使用 MD5,那么如果文件被更改,它将被动态更新,或者我每次更改代码时都必须指定不同版本的脚本?
  • 我添加的链接显示了要做什么。基本上,资源的链接是通过让服务器检查资源的日期/时间来动态生成的。
【解决方案2】:

我认为一种优雅的方法是使用 gulpfile 重命名您的 *.css 和 *.js 文件名,以在末尾包含文件内容的哈希。

1) Gulp 库:处理文件名
https://github.com/sindresorhus/gulp-rev 它的作用示例:将文件名 unicorn.css 转换为 unicorn-d41d8cd98f.css

2) Gulp 库:处理 index.html 包含
要注入 css 和 js,您可以使用另一个 gulp librairie : https://www.npmjs.com/package/gulp-inject 这允许您使用文件目录在 index.html 中自动包含 css 和 js。

3) 你必须做什么
您所要做的就是创建一个使用这两个库的 gulp 任务。我发誓这并不难。我没有足够的时间做演示(我会在接下来的几天内做)。

这个解决方案有两个优点:

  • 只有更改的文件才会在用户端缓存重新加载
  • 您不需要在项目中使用外部 js 库, 这会增加失败的风险。

【讨论】:

  • 是的,对不起,我忘了说这是一个大项目,所以我正在寻找可以让我自动更新 URL 而不是手动重命名文件的东西
  • 很好解释我认为这将是我的选择。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-14
  • 1970-01-01
  • 2014-02-06
  • 2020-09-15
  • 2017-09-13
  • 2010-10-07
相关资源
最近更新 更多