首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >apache2 DirectoryIndex更改不会绕过缓存索引

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

Stack Overflow用户
提问于 2018-05-25 18:25:17
回答 1查看 65关注 0票数 0

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

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

代码语言:javascript
复制
DirectoryIndex index-v123.html

在我的apache2.conf里。我已经重启了它,当我在chrome匿名模式或硬刷新模式下查看网站时,我可以看到所有新文件都已加载,网站工作正常。

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

那么我能做些什么来实现这一点呢?

(也可能是相关的:我正在运行一个渐进式的web应用程序,使用Polayer2.0,它有一个由polymer build自动构建的service-worker.js。)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-30 10:07:22

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

代码语言:javascript
复制
<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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50527052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档