2013-09-30 4 views
0

Я хочу изменить свойства кеширования вложенной папки, но она не работает должным образом. Вместо файлов в foo/images и foo/icons, которые кэшируются, они возвращаются без набора кеша.Адаптация конфигурации Apache для подкаталогов

# 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 с регулярными выражениями совпадет в указанном порядке.

Имейте в виду, что мой настоящий сайт намного сложнее, чем этот поддельный пример. Так что да, я знаю, что могу установить по умолчанию, чтобы не кэшировать, а затем устанавливать его для каждого каталога, но я не могу этого сделать в этой конфигурации, поэтому я хочу сделать это только с директивами Directory, а также без файлов .htaccess.

+0

Это только заголовок 'Pragma', который вы видите (всегда будет установлен btw)? Или это «Cache-Control»? – Qben

+0

Похоже, обе эти директивы запускаются для подпапок, поэтому для Cache-Control вы получаете «no-cache, no-store, must-revalidate, max-age = 0, proxy-revalidate, no-transform, public, proxy-revalidate' – Toxikman

+0

Вы попробовали мое предложение в ответе ниже? – Qben

ответ

1

Я думаю, что ваша проблема в том, что действуют как настройки <Directory ~ "..">. Это сделает менее конкретным (^/web/(foo|bar)) перезаписать изменения, внесенные вами в каталог images и icons. Вы можете попробовать исключить эти каталоги из родителя 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> 

Надеюсь, что это поможет вам в борьбе.

Смежные вопросы