【发布时间】:2017-06-20 17:44:53
【问题描述】:
简介
我的任务是解决现有站点的问题,即没有缓存任何内容(浏览器会话除外)。关闭会话并再次打开浏览器时,页面会再次加载大量图像、JS 和 CSS。由于我每次都有约 60 件物品,因此存在很大的负载问题。
问题
查看 Chrome 控制台,Audit 显示 以下资源缺少缓存过期...
并且在“响应标头”中的网络项目中甚至没有显示“缓存控制”行。
尝试过的解决方案
我已在.htaccess 文件中设置信息并确保mod_expires 处于活动状态:
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"
</IfModule>
我在 html 头中添加了Cache-control 元标记,该标记也显示在页面的代码源中,因此已编译。
<meta http-equiv="Cache-control" content="public" content="max-age=604800">
我想补充一点,它很可能不是服务器问题,因为生产页面的主机已将其设置为通常的默认值。 (而且我无论如何都无法访问该服务器)
如果有人可以给我一些关于我遗漏或未检查或根本不理解的内容的指示,我会非常高兴。
谢谢!
【问题讨论】:
-
@eol 我已经在 html 元标记中使用 max-age 设置了 Cache-control 标头。
-
无特定顺序... 1) ETag 应该做到这一点,让资产得到缓存。 2) HTML 元标记绝不会影响任何其他资源 3)
<IfModule mod_expires.c>表示:“如果模块不可用,请忽略我的代码,不要告诉我” 4) PHP 没有任何作用在资产交付中(除非这样做,在这种情况下您应该解释如何) -
@MikelisBaltruks:作为参考,您可以查看stackoverflow.com/questions/49547/…