apache2 目录索引更改不会绕过缓存索引



我正在努力确保我的网站的访问者看到最新版本。为此,我编写了一个脚本来重命名相应的文件和请求,以便它们在构建时附加一个新的版本号。这包括索引文件,我们称之为index-v123.html

我已经上传了这个构建的源代码,并通过包括以下内容将我的apache2服务器指向新的索引文件

DirectoryIndex index-v123.html

在我的apache2.conf.我已经重新启动了它,当以 chrome 隐身模式或硬刷新查看网站时,我可以看到所有新文件都已加载并且网站按预期工作。

我的问题是,在我的普通浏览器中,当我访问 URL 时,我仍然加载了index.html的缓存版本。显然,更改DirectoryIndex并没有说服客户像我希望的那样转到新的索引文件......

那么我能做些什么来实现这一目标吗?

(也可能是相关的:我正在运行一个使用 Polymer 2.0 的渐进式 Web 应用程序,其service-worker.jspolymer build自动构建。

这被证明是一个服务工作者的问题:service-worker.js被缓存在客户端,因此提供了过时的内容,就好像客户端处于离线模式一样。只能通过注销工作人员来更新。解决方案是在 apache2 服务器端的服务工作线程上实现max-age=0

<Files index.html|service-worker.js>
FileETag None
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</Files>

令人惊讶的是,这在某处的聚合物构建/生产文档中没有更好地突出显示。作为参考,在谷歌关于服务工作者的入门中,它说:

遵循服务工作进程脚本上的缓存标头(最多 24 小时(获取更新时。我们将进行此选择加入 行为,因为它会让人们出局。您可能希望最大年龄为 0 在服务工作进程脚本上。

最新更新