2

我对两件事感兴趣:

T.1) mod_pagespeed 已经为每个文件安装了 Expires 标头值,除了 html、xml...、documents。那么我怎样才能为每个文件和文件夹更改这个时间?这个模块可以做到吗?

我希望第一个任务不需要示例。

T.2) mod_pagespeed 在每个缓存文件被更改后 3-4 分钟更新它。因此,如果我更改文件的内容,那么它会在 3-4 分钟后刷新后更新。这个模块如何控制这个时间?

第二个问题的例子:

我保存了名为 test.jpg 的 JPEG 图像,在浏览器中刷新如下:

本地主机/图像/test.jpg

然后我用图像编辑器更改这个文件并重新保存它。现在此文件已保存在浏览器的缓存中,3-4 分钟后将在浏览器中呈现。所以我想为每个文件和文件夹控制这个时间。

PS:伙计们,我真的需要你们的帮助!整个星期都在试图解决这个问题。

4

1 回答 1

2

一点背景: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 缓存。这可以让您在开发时快速更新服务器,但不会让您的服务器在其余时间不必要地负担。

于 2012-07-17T17:46:29.417 回答