添加Expires Headers和.htaccess

时间:2014-02-06 13:24:28

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

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

无论如何,我一直在寻找在线教程,如How to Add Far Future Expires Headers to Your WordPress Site以及如何通过Thomas Griffen Media的.htaccess在WordPress中利用浏览器缓存,这些似乎只是一个复制和粘贴的案例(我我知道这些设置特定于每个站点,具体取决于您更新/编辑某些内容和文件的频率,但是当我重新测试该站点时,这些设置似乎永远不会注册。

以下是我的.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文件中的设置没有首先注册。

任何帮助都会非常感激,因为我自己找不到任何帮助。

2 个答案:

答案 0 :(得分:4)

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

&#13;
&#13;
<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>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

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

sudo -i

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

sudo a2enmod headers

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

粘贴在下面的命令中重启:

service apache2 restart

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

sudo a2enmod expires

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

service apache2 restart

那就是它。现在,您服务器上托管的所有内容都应正确缓存。请注意,如果您正在使用CDN,则需要去那里并指定远期的缓存日期。如果您正在使用MaxCDN,则只需导航到区域&gt;拉区&gt;设置&gt;缓存设置,然后规定12个月。