index.html (Apache) 的正确缓存清除
index.html (Apache) 的正确缓存清除
来自 Competa IT 档案; Bastiaan Dressen 于 2018 年 2 月 22 日首次发表。
部署 JavaScript 应用程序的一种方法是使用一些构建工具(如 Webpack)构建简化版本,并将构建作为静态资源放置在 Web 服务器上。
该构建通常有一个 index.html,它是主要入口点,包含对 JavaScript 和 CSS 文件的引用。
这些引用的文件通常在其文件名中包含哈希。造成这种情况的原因不同,但主要是为了区分不同的构建。
那么问题是什么?
浏览器似乎积极缓存 index.html,因此在手动清除浏览器缓存之前不会注意到服务器上的新版本。
在某些情况下,用户无法执行此手动清除。
示例: index.html 指向几个在其各自文件名中包含哈希的文件,例如。应用-cf7653dd.js
服务器上的新文件(部署后)不会被注意到,因为 index.html 的缓存版本仍然指向 app-faa65436.js(包含旧哈希的 app.js 文件)
好的,那么解决方案是什么?
将 apache 配置为不缓存 index.html。所有其他文件都可能被缓存。
因为新版本的 JS 和 CSS 文件包含一个唯一的哈希值,它可能会随着新的构建而改变,所以这些文件名的改变可以实现开箱即用的缓存破坏。
下面的说明是需要添加到 Apache 配置中的内容。
<Directory "PATH_TO_DIRECTORY_OF_INDEX.HTML"> <Files "index.html"> FileETag 无 标题看不见的 ETag 标头集 Cache-Control "max-age=0, no-cache, no-store, must-revalidate" 标头集 Pragma "no-cache" 标头集过期“星期三,1984 年 1 月 11 日 05:00:00 GMT” </Files> </Directory>
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通