caching - 版本控制和缓存静态文件 : CSS, JS、图像 -- 需要考虑的事项

标签 caching http-caching

对于(企业)Web 项目,我想保留静态文件的先前版本,以便项目可以自行决定何时准备好实现设计更改。我最初的计划是为静态内容提供文件夹,如下所示:

company.com/static/1.0.0/
company.com/static/1.0.0/css/
company.com/static/1.0.0/js/
company.com/static/1.0.0/images/
company.com/static/2.0.0/
company.com/static/2.0.0/css/
company.com/static/2.0.0/js/
company.com/static/2.0.0/images/

这些文件夹中的每个文件都应该有一个缓存策略来“永远”缓存——至少一年。我还计划将 css 文件和 js 文件连接成一个,以尽量减少请求数量。

然后我还会提供一个当前文件夹(其中符号链接(symbolic link)到最新发布的版本)

company.com/static/current/
company.com/static/current/css/
company.com/static/current/js/
company.com/static/current/images/

这将解决我的第一个问题(项目和子网站可以将其代码锁定到某个版本,并且可以在准备好时进行升级)。

但是我可以看到一些缓存问题。现在我不能“仅”缓存当前文件夹,因为它会随着每个版本的变化而变化。我对该文件夹的缓存策略应该是什么。

此外,对于每个版本,大多数静态文件无论如何都不会改变。永久缓存它们并在发生更改时重命名是否相关?

我在这里寻求建议,因为我想知道缓存和更改文件之间的最佳权衡。

最佳答案

注意 HTTP 缓存。我前段时间研究过这个。 my blog article on the HTTP caching

关于caching - 版本控制和缓存静态文件 : CSS, JS、图像 -- 需要考虑的事项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9599468/

相关文章:

java - 如何避免在 ehcache 中定义不需要的缓存

java - 正则表达式最佳实践 : multiple patterns or single one with combined expression?

javascript - 服务 worker : Return cached response first and fetch response async

rest - Redis/Memcached ReST 外部服务缓存

rest - HTTP 缓存的授权检查

reload - "Empty Cache and Hard Reload"是清空整个缓存还是仅清空与当前站点相关的部分?

php - 利用 Laravel 5.1 应用程序的浏览器缓存

http - 如何阻止浏览器使用 HTTP 1.1 header 缓存我的网页?

npm - 有和没有 "latest"的 JSDelivr URL 的区别

rest - 显式禁用 REST 服务的缓存