【问题标题】:Force clients browser cache to clear for php generated pages强制客户端浏览器缓存清除 php 生成的页面
【发布时间】:2021-02-10 17:30:42
【问题描述】:

我已经在网上搜索了一段时间,正在寻找一种解决方案,如何强制客户端的浏览器不仅清除缓存的 JS 和 CSS 文件,还清除 php 生成的文件?或者可能与 cookie 处理有关...?

我目前的情况:我正在维护一个自定义 WordPress 主题,并编写了一个过滤函数来更改密码保护帖子的密码表单的 html 输出。应用更改并更改主题版本时,html 输出会按预期更新。但是,当尝试输入密码时,用户会从网站注销,而不是访问帖子...

打开隐身标签或清除浏览器缓存可解决问题,一切正常。但是,我无法联系所有用户并向他们解释如何清除浏览器缓存!特别是因为我经常需要在网站上进行类似的更改,因为它已经在使用中添加了新功能。

另外值得注意的是:该网站使用 SuperPWA 运行,大多数用户通过其移动设备上安装的 PWA 版本访问该网站。所以禁用这个插件不是一个选项。

【问题讨论】:

    标签: wordpress caching cookies browser progressive-web-apps


    【解决方案1】:

    为此,我在 JS / CSS 上使用了“防止浏览器缓存”插件,效果很好。 关于清除生成的 PHP... 你在使用缓存插件吗?删除它!

    【讨论】:

      【解决方案2】:

      您需要设置资产的 Cache-Control 标头值来控制网络请求被浏览器缓存多长时间。

      如果您使用 service worker 缓存资产,那么您需要创建一个适用于您的站点的失效例程。您可以采用多种缓存失效策略。我在我开发的应用程序中使用了各种这些。

      【讨论】:

      • 但是更改标头会强制客户端的浏览器清除已缓存的资产吗?我对服务人员的世界还很陌生,由于这是由第三方插件处理的,我不确定我在这里能有多大的影响力......?
      • Cache-Control 告诉用户代理、路由器等最大建议时间来缓存资源。是的,一般来说,当生存时间到期时,您会让它们使缓存无效并从网络中获取。至于服务人员,您可以完全控制资产或数据的缓存时间,除非设备提前清除它以释放磁盘空间。
      • 所以据我了解,服务工作者缓存的文件或服务工作者中设置的到期时间将阻止调用检查缓存控制标头是否已更改,直到设置的到期日期由服务人员到达,对吗?在这种情况下,我唯一的选择是手动调整服务人员及其缓存策略?但是,这是内置在第三方插件中的,我不想篡改它的核心文件,甚至开始详细了解它的工作原理......
      猜你喜欢
      • 2012-01-10
      • 2016-02-18
      • 1970-01-01
      • 2016-10-01
      • 2015-07-30
      相关资源
      最近更新 更多