如何使用"缓存控制来自cloudfront的最大年龄指令"在AEM?

时间:2017-06-07 20:43:27

标签: aem

我需要将pdf文档的缓存持续时间设置为1小时。因此,每隔一小时后,PDF就会刷新。我通过互联网发现我们可以使用缓存控制 - 最大年龄标题,如下所示 -

Cache-Control: max-age=3600

这样它就会告诉cloudfront将PDF保存在缓存中3600秒(1小时)。

但我不确定在哪里放这个代码。我需要把它放在调度员手中吗?如果有,怎么样?任何人都可以提供相同的代码片段吗?

此外,我们已经包含了" expires.rules"调度程序中的文件具有以下代码 -

ExpiresActive on
ExpiresDefault                                      "access plus 1 month"

Header append Cache-Control "public"
Header add X-ServiceProvider "Test"

#PDF
ExpiresByType application/pdf                       "access plus 1 hour"

它是否与max-age标题做同样的事情?

如果有人可以解释这一点,那将会非常有用。

谢谢!

1 个答案:

答案 0 :(得分:2)

标准方法是在Apaches VirutalHost定义中设置缓存头。通常,设置因文件类型和路径而异。另外,请确保您区分作者和出版商。

以下是一些例子

# Cache JS+CSS with MD5 Hash for 30 days
SetEnvIf Request_URI "^.*(\.min)?\.[a-f0-9]{25,32}\.(js|css)$" immutable_resource=true
Header set Cache-Control "public, max-age=2592000" env=immutable_resource


# Cache Images for 30 days
SetEnvIf Request_URI "^/(etc|content)/.*\.(svg|png|gif|jpeg|jpg)$" image_resource=true
Header set Cache-Control "public, max-age=2592000" env=image_resource

# Cache Fonts for 30 days
SetEnvIf Request_URI "^/etc/.*\.(eot|ttf|woff|woff2)$" font_resource=true
Header set Cache-Control "public, max-age=2592000" env=font_resource

# Cache HTML documents for 2 hours (in this example everything is served with /content/...)
SetEnvIf Request_URI "^/content/myproject/.*\.html$" html_document=true
# Treat vanity URLs as HTML documents too
SetEnvIf Request_URI "^/[A-Za-z0-9]+(\.html)?$" html_document=true
Header set Cache-Control "public, max-age=7200" env=html_document