apache2 DirectoryIndex更改不会绕过缓存索引

时间:2018-05-25 10:25:17

标签: apache caching polymer apache2

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

我已经上传了这个内置的源代码,并通过包含

将我的apache2服务器指向新的索引文件
DirectoryIndex index-v123.html

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

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

我可以做任何事情来实现这个目标吗?

(也可能相关:我正在使用Polymer 2.0运行渐进式Web应用程序,service-worker.js自动构建polymer build。)

1 个答案:

答案 0 :(得分:0)

结果证明这是一个服务工作者问题: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>

感到惊讶的是,在某处的聚合物构建/生产文档中没有更好地突出显示。作为参考,在服务工作者的google primer上说:

  

遵守服务工作者脚本上的缓存标头(最多为   获取更新时的24小时)。我们将进行此选择   行为,因为它吸引了人们。您可能希望最大年龄为0   在您的服务工作者脚本上。