6

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

无论如何,我一直在在线查看教程,例如如何将远期过期标头添加到您的 WordPress 站点以及如何通过 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 ##

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

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

4

2 回答 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>

于 2015-07-28T19:23:00.403 回答
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,您还需要去那里并指定一个遥远的未来缓存日期。如果您使用 MaxCDN,您只需导航到区域 > 拉取区域 > 设置 > 缓存设置,然后指定 12 个月。

于 2018-03-07T05:08:40.920 回答