一点背景:mod_pagespeed 延长了资源的缓存寿命,并在资源名称中添加了唯一的哈希码,以提高用户的可缓存性,从而加快返回用户的页面加载速度。
正如您所指出的,有两个不同的缓存生命周期对 mod_pagespeed 很重要。
(T.1) 是缓存生存期 mod_pagespeed 集。它目前设置为 1 年,我认为它不可定制。但是由于我们在 URL 中添加了唯一的哈希码,因此在大多数情况下您不需要自定义它。一旦 mod_pagespeed 意识到资源发生了变化,它就会将不同的 URL 放入 HTML 文件中,从而更新用户缓存。
(T.2) 是资源的原始缓存生命周期(默认为 5 分钟)。mod_pagespeed 会在文件过期时重新加载文件,因此您会看到 3-4 分钟的延迟。有几种不同的方法可以改善这一点。最好的情况是,如果文件完全是静态的,您可以使用ModPagespeedLoadFromFile。当您使用该指令时,mod_pagespeed 将在每次重写 HTML 时检查文件,这意味着资源将立即更新。如果您不能使用 LoadFromFile,您可以在 Apache 中为您的资源显式设置较短的缓存生命周期。例如:
<Directory ".../foo/">
ExpiresByType image/gif "modification plus 3 minutes"
ExpiresByType text/css "modification plus 1 minute"
</Directory>
<Directory ".../bar/">
ExpiresByType text/css "modification plus 5 minutes"
</Directory>
但是,请注意,如果您减少此时间,您将使 mod_pagespeed 更频繁地请求资源(对于上述 foo/ 目录中的 CSS 文件,每 1 分钟一次),并且会不必要地给您的服务器增加更多负载。另一种解决方案是在开发过程中清除 mod_pagespeed 缓存。这可以让您在开发时快速更新服务器,但不会让您的服务器在其余时间不必要地负担。