快速提问。我尝试在启用 SSL 的 Apache 上为 wordpress 网站启用浏览器缓存。我安装了 mod_expires sudo a2enmod expires
(我已验证它已启用并列在 /etc/apache2/mods-enabled 上)我按照以下建议编辑了 .htaccess 文件GTMetrix
我的 .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
# Browser Caching Start #
<IfModule mod_expires.c>
# Enable expirations
ExpiresActive On
# Default directive
ExpiresDefault "access plus 1 month"
# My favicon
ExpiresByType image/x-icon "access plus 1 year"
# Images
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"
# CSS
ExpiresByType text/css "access plus 1 month"
# Javascript
ExpiresByType application/javascript "access plus 1 year"
</IfModule>
# Browser Caching End #
重新启动 apache 并在 Google 和 GTMetrix 上测试。我不断收到“利用浏览器缓存”的消息,显示图像将在 4 小时后过期。
https.../image.png(4 小时)
关于如何调试这个问题有什么建议吗,或者您发现我做错了什么?
以下是其中一个图像的 http 响应标头:
Content-Length: 13937
Connection: keep-alive
Set-Cookie: __cfduid=dc6febbc08cc78186b2444352064d20611481224874; expires=Fri, 08-Dec-17 19:21:14 GMT; path=/; domain=.mydomain.com; HttpOnly
Strict-Transport-Security: max-age=63072000; includeSubdomains
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Last-Modified: Wed, 07 Dec 2016 05:20:33 GMT
ETag: "3671-5430aae243b0e"
Cache-Control: public, max-age=2592000
Expires: Sat, 07 Jan 2017 19:21:14 GMT
X-Content-Type-Options: nosniff
CF-Cache-Status: MISS
Accept-Ranges: bytes
Server: cloudflare-nginx
CF-RAY: 30e294493e2f3fd7-YUL
我看到“到期日期:1 月 7 日星期六”,所以应该是一个月,但 Google 一直写着 4 小时?这是怎么回事?:)