0

我想更改子文件夹的缓存属性,但它似乎没有按预期工作。不是缓存 foo/images 和 foo/icons 中的文件,而是以 no-cache set 返回它们。

# enable caching for static files
<Directory ~ "^/web/foo/(images|icons)">
    ExpiresActive On
    # cache images and media for 7 days
    ExpiresDefault A604800
    Header append Cache-Control "public, proxy-revalidate"
</Directory>

<Directory ~ "^/web/(foo|bar)">
    ExpiresActive On
    ExpiresDefault A0
    Header set Cache-Control "no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, no-transform"
    Header set Pragma "no-cache"
</Directory>

我基本上希望所有内容都不要缓存,除非它们位于某些子文件夹中。我的理解是具有正则表达式匹配的目录将按列出的顺序匹配。

请记住,我的真实网站比这个虚假示例要复杂得多。所以是的,我知道我可以将默认值设置为不缓存,然后为每个目录设置它,但我实际上无法在此配置上执行此操作,因此我只想使用 Directory 指令而不使用 .htaccess 文件来执行此操作。

4

1 回答 1

1

我认为你的问题是这两个<Directory ~ "..">设置都是有效的。这将使不太具体的 ( ^/web/(foo|bar)) 覆盖您在imagesandicons目录中所做的更改。您可以尝试从 parent 中排除这些目录Directory

<Directory ~ "^/web/(foo|bar)(?!(/icons|/images))">
    ExpiresActive On
    ExpiresDefault A0
    Header set Cache-Control "no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, no-transform"
    Header set Pragma "no-cache"
</Directory>

希望对你有所帮助。

于 2013-09-30T07:33:55.807 回答