如何确保在没有任何缓存的情况下获得最后一页版本?

时间:2020-07-20 作者:J.BizMai

作为开发人员,您希望始终执行页面上最新版本文件的刷新操作。据我所知,有三种缓存:

浏览器缓存(浏览器设置)

  • 网站缓存(WP插件)
  • 代理缓存(HTTP头)
  • 由于某些原因,有时我可以删除浏览器缓存,在Wordpress项目上下载新浏览器,而不需要任何缓存插件。。。如果我按F5、CTRL+F5或CTRL+Shift+R,我会得到一个旧版本,有时版本会更旧。我可以这样打发时间。一位朋友告诉我查看代理缓存,并强制HTTP头获取最新版本的文件。

    我得到了这个原始标题:

    GET /preprod/sign-up/ HTTP/2
    Host: mysite.com
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:79.0) Gecko/20100101 Firefox/79.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    Accept-Language: en-US,en;q=0.5
    Accept-Encoding: gzip, deflate, br
    Referer: ...
    DNT: 1
    Connection: keep-alive
    Cookie: wordpress_test_cookie=WP+Cookie+check; bid_1_password_protected_auth=1111111111111111111111; SERVERID123456=1234
    Upgrade-Insecure-Requests: 1
    Pragma: no-cache
    Cache-Control: no-cache
    
    问题:

    如何检查这是否是代理缓存问题

    2 个回复
    SO网友:Tom J Nowell

    如果是浏览器缓存,则可以进入开发工具并禁用所有本地缓存。浏览器文档可以告诉您如何执行此操作。

    如果是代理缓存,请将其关闭或加载没有代理的站点,然后重新测试。您需要查阅您正在使用的代理的文档,了解如何执行此操作以及如何修复它。您最好在另一个堆栈上询问您的特定代理软件及其配置。

    如果是WP缓存,那么不是,WP没有页面缓存。要么禁用提供缓存的插件并重新测试,要么查阅其文档。这里的解决方案是特定于插件的,没有通用的WP解决方案,因为没有通用的WP页面缓存。

    要么从浏览器缓存开始,在消除过程中剥离层。或者,将其全部删除,然后一次将其返回到一层,直到错误行为再次出现。这将为您提供有关如何调试问题以及哪一层有问题的有用信息。

    SO网友:J.BizMai

    我找到了解决办法here.

    function add_header_no_cache($headers) {
    
        $headers[\'Cache-Control\'] = \'no-cache, no-store, must-revalidate, max-age=0\'; 
        $headers[\'Pragma\'] = \'no-cache\';
        $headers[\'Expires\'] = \'0\';
    
        return $headers;     
    }
    add_filter( \'wp_headers\', \'add_header_no_cache_login\' );