【问题标题】:Adding Expires Headers and .htaccess添加过期标头和 .htaccess
【发布时间】:2014-02-06 13:24:27
【问题描述】:

我正在尝试根据我从 GTmetrix 获得的报告优化我的 WordPress 网站 - Type & Music。我被建议做的一件事是添加过期标头并利用浏览器缓存。我可能错了,但我认为这些是同一件事?

无论如何,我一直在查看在线教程,例如 How to Add Far Future Expires Headers to Your WordPress Site 和 How to Leverage Browser Caching in WordPress via .htaccess from Thomas Griffen Media,这些似乎都只是复制和粘贴的情况(我知道尽管这些设置特定于每个站点,具体取决于您更新/编辑某些内容和文件的频率)但是当我重新测试该站点时,这些设置似乎根本没有注册。

这是我的 .htaccess 文件的内容:

# BEGIN WordPress

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

## EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 month”
ExpiresByType image/jpeg "access 1 month”
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 week”
ExpiresByType text/css "access 1 week”
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 week"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 2 days"
</IfModule>
## EXPIRES CACHING ##

此后我也安装了快速缓存插件,但据我所知,这并没有真正冲突,尤其是因为我的 htaccess 文件中的设置一开始没有注册。

任何帮助都将不胜感激,因为我自己没有找到任何帮助。

【问题讨论】:

  • 这两个答案对您有帮助吗?

标签: .htaccess optimization browser-cache expires-header


【解决方案1】:

这是您需要添加到您的 .htaccess 文件中才能解决此问题的内容。这是大多数类型文件的完整脚本。希望这会有所帮助。

<IfModule mod_expires.c>
    ExpiresActive on
    ExpiresDefault "access plus 1 month"
    ExpiresByType image/gif "access plus 1 month"
    ExpiresByType image/png "access plus 1 month"
    ExpiresByType image/jpg "access plus 1 month"
    ExpiresByType image/jpeg "access plus 1 month"
    ExpiresByType text/html "access plus 3 days"
    ExpiresByType text/xml "access plus 1 seconds"
    ExpiresByType text/plain "access plus 1 seconds"
    ExpiresByType application/xml "access plus 1 seconds"
    ExpiresByType application/rss+xml "access plus 1 seconds"
    ExpiresByType application/json "access plus 1 seconds"
    ExpiresByType text/css "access plus 1 week"
    ExpiresByType text/javascript "access plus 1 week"
    ExpiresByType application/javascript "access plus 1 week"
    ExpiresByType application/x-javascript "access plus 1 week"
    ExpiresByType image/x-ico "access plus 1 year"
    ExpiresByType image/x-icon "access plus 1 year"
    ExpiresByType application/pdf "access plus 1 month"
  <IfModule mod_headers.c>
       Header unset ETag
       Header unset Pragma
       Header unset Last-Modified
       Header append Cache-Control "public, no-transform, must-revalidate"
       Header set Last-modified "Tue, 1 Oct 2014 10:10:10 GMT"
  </IfModule>
</IfModule>

【讨论】:

    【解决方案2】:

    问题与 LAMP 服务器上缺少 Apache2 模块有关(特别是 mod_headers 和 mod_expires)。如果您可以通过 SSH 进入,请通过以下命令访问并访问 root:

    sudo -i
    

    然后粘贴以下内容以启用 Mod Headers:

    sudo a2enmod headers
    

    然后您将看到此消息:要激活新配置,您需要运行:service apache2 restart

    粘贴下面的命令重启:

    service apache2 restart
    

    接下来,粘贴以下命令以启用内容缓存:

    sudo a2enmod expires
    

    使用您在下面看到的内容再次重新启动,您会很好:

    service apache2 restart
    

    就是这样。您的服务器上托管的所有内容现在都应该正确缓存。请注意,如果您使用的是 CDN,您还需要去那里并指定一个遥远的未来缓存日期。如果您使用 MaxCDN,您只需导航到区域 > 拉取区域 > 设置 > 缓存设置,然后指定 12 个月。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-08
      • 2014-05-01
      • 2016-12-06
      • 2014-07-19
      • 2018-11-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多