如何在已经缓存该网站的浏览器中覆盖最长6个月的最长期限?

问题描述 投票:1回答:1

我从客户那里收到的信息表明,其网站访问者没有获得其Wordpress网站的最新版本。我跟踪到浏览器缓存。最长年龄设置为6个月。此设置是SiteGround缓存插件的默认行为。安装SG Optimizer缓存插件后,以下代码将添加到htaccess文件中。这会将最大年龄和有效期设置为从现在起六个月的日期。如您所见,它还在本地缓存html。这是被添加到htaccess中的代码:

# HTTPS forced by SG-Optimizer
<IfModule mod_rewrite.c>
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteCond %{HTTPS} off
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
# END HTTPS
# Leverage Browser Caching by SG-Optimizer
<IfModule mod_expires.c>
    ExpiresActive on
    ExpiresDefault                                      "access plus 6 months"
  # CSS
    ExpiresByType text/css                              "access plus 1 year"
  # HTML components (HTCs)
    ExpiresByType text/x-component                      "access plus 2 months"
  # HTML
    ExpiresByType text/html                             "access plus 6 months"
  # JavaScript
    ExpiresByType application/javascript                "access plus 1 year"
    ExpiresByType application/x-javascript              "access plus 1 year"
  # Manifest files
    ExpiresByType application/x-web-app-manifest+json   "access plus 0 seconds"
    ExpiresByType text/cache-manifest                   "access plus 0 seconds"
  # Media
    ExpiresByType audio/ogg                             "access plus 1 year"
    ExpiresByType image/gif                             "access plus 1 year"
    ExpiresByType image/jpg                             "access plus 1 year"
    ExpiresByType image/jpeg                            "access plus 1 year"
    ExpiresByType image/png                             "access plus 1 year"
    ExpiresByType image/svg                             "access plus 1 year"
    ExpiresByType image/svg+xml                         "access plus 1 year"
    ExpiresByType video/mp4                             "access plus 1 year"
    ExpiresByType video/ogg                             "access plus 1 year"
    ExpiresByType video/webm                            "access plus 1 year"
    ExpiresByType image/x-icon                          "access plus 1 year"
    ExpiresByType application/pdf                       "access plus 1 year"
    ExpiresByType application/x-shockwave-flash         "access plus 1 year"
  # Web feeds
    ExpiresByType application/atom+xml                  "access plus 1 hour"
    ExpiresByType application/rss+xml                   "access plus 1 hour"
  # Web fonts
    ExpiresByType application/font-woff                 "access plus 1 year"
    ExpiresByType application/font-woff2                "access plus 1 year"
    ExpiresByType application/vnd.ms-fontobject         "access plus 1 year"
    ExpiresByType application/x-font-ttf                "access plus 1 year"
    ExpiresByType font/opentype                         "access plus 1 year"
</IfModule>
# END LBC
# GZIP enabled by SG-Optimizer
<IfModule mod_deflate.c>
    <IfModule mod_filter.c>
       AddOutputFilterByType DEFLATE "application/atom+xml" \
          "application/javascript" \
          "application/json" \
          "application/ld+json" \
          "application/manifest+json" \
          "application/rdf+xml" \
          "application/rss+xml" \
          "application/schema+json" \
          "application/vnd.geo+json" \
          "application/vnd.ms-fontobject" \
          "application/x-font-ttf" \
          "application/x-javascript" \
          "application/x-web-app-manifest+json" \
          "application/xhtml+xml" \
          "application/xml" \
          "font/eot" \
          "font/opentype" \
          "image/bmp" \
          "image/svg+xml" \
          "image/vnd.microsoft.icon" \
          "image/x-icon" \
          "text/cache-manifest" \
          "text/css" \
          "text/html" \
          "text/javascript" \
          "text/plain" \
          "text/vcard" \
          "text/vnd.rim.location.xloc" \
          "text/vtt" \
          "text/x-component" \
          "text/x-cross-domain-policy" \
          "text/xml"
    </IfModule>
</IfModule>
# END GZIP

我已经尝试通过从.htaccess中删除上述行并添加类似以下内容的行来修复它:

# DISABLE CACHING
<IfModule mod_expires.c>
        ExpiresActive Off
</IfModule>
<IfModule mod_headers.c>
        FileETag None
        Header unset ETag
        Header unset Pragma
        Header unset Cache-Control
        Header unset Last-Modified
        Header set Pragma "no-cache"
        Header Set Cache-Control "max-age=0, public, must-revalidate"
        Header Set Expires "Thu, 1 Jan 1970 00:00:00 GMT"
 </IfModule>

但是没有帮助。似乎浏览器不再向服务器发出任何请求,因为它已在本地缓存,并且正在处理从本地缓存到用户的所有操作,直到6个月的最长使用期限为止。然后它将检查是否有较新的版本。在我们托管并为客户创建的所有网站上都会发生此问题,因此这对我们来说是一个大问题。

我已经尝试过将网站网址更改为不带www的网址。试图将主页切换到另一个页面,也没有用。也许将整个站点移至新的IP并更改A记录都可以覆盖本地缓存?

我正在寻找一种解决此问题的聪明方法。我希望有人知道解决方案。

非常感谢!

wordpress apache caching http-headers browser-cache
1个回答
0
投票
更改资源名称,如果您可以控制服务器,则可以使用Pagespeed自动完成。参见cache extend filter

或者,使用dataurl per RFC 2397内嵌HTML中的图像。菲尔·惠兰(Phil Whelan)的post更容易阅读。

© www.soinside.com 2019 - 2024. All rights reserved.