为网站添加过期头和.htaccess文件

6
我正在优化我的WordPress网站-Type & Music,根据我从GTmetrix得到的报告。其中一件我被建议做的事情是添加过期头和利用浏览器缓存。我可能错了,但我认为这些是同一件事吗?
无论如何,我一直在查看在线教程,例如How to Add Far Future Expires Headers to Your WordPress Site和来自Thomas Griffen Media的How to Leverage Browser Caching in WordPress via .htaccess,它们似乎只是复制和粘贴的情况(我知道设置对于每个网站都是特定的,具体取决于您更新/编辑某些内容和文件的频率),但是当我重新测试网站时,这些设置似乎从未注册。
这是我的.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 ##

我后来也安装了Quick Cache插件,但据我所知,它并不会产生冲突,特别是因为我的htaccess文件中的设置一开始就没有被注册。
如果有帮助,将不胜感激,因为我自己找不到任何有用的东西。

这两个答案有帮助吗? - clayRay
2个回答

6

以下是您需要添加到.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>


1
问题与您的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,您还需要前往CDN并指定远期缓存日期。如果您正在使用MaxCDN,则只需导航到“区域”>“拉取区域”>“设置”>“缓存设置”,然后指定12个月即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接