Проблема с кэшированием в Drupal 7.0! - PullRequest
2 голосов
/ 23 июня 2011

Я только что закончил проект drupal и прохожу этап оптимизации сайта.Я проверил блоки кеша и агрегацию CSS и JS по производительности для лучшего времени загрузки.но кое-что я заметил, когда я запускаю тест скорости страницы или Yslow, все проходит, кроме использования кэширования браузера.Похоже, что срок действия не установлен на всех изображениях и файлах CSS.У меня вопрос: нужно ли мне редактировать файл .htaccess или мне нужно поместить изображения и файлы CSS, которые не кэшируются, в определенную папку?

Любая помощь приветствуется, большое спасибо заранее

Ответы [ 2 ]

2 голосов
/ 23 июня 2011

Вы можете настроить Apache для установки определенных заголовков expire / control cache для ваших файлов изображений / css / js, используя mod_expires и mod_headers .

Вот несколько примеров (общие примеры - проанализируйте и сверьтесь с руководством перед применением к вашей системе):

<FilesMatch "\.(html|htm|js|css)$">
    FileETag None
    <IfModule mod_headers.c>
        Header unset ETag
        Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
        Header set Pragma "no-cache"
        Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
    </IfModule>
</FilesMatch>

Кэширование с обоими mod_expires + mod_headers

# Turn on Expires and set default to 0
ExpiresActive On
ExpiresDefault A0

# Set up caching on media files for 1 year (forever?)
<FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav)$">
    ExpiresDefault A29030400
    Header append Cache-Control "public"
</FilesMatch>

# Set up caching on media files for 1 week
<FilesMatch "\.(gif|jpg|jpeg|png|swf)$">
    ExpiresDefault A604800
    Header append Cache-Control "public"
</FilesMatch>

# Set up 2 Hour caching on commonly updated files
<FilesMatch "\.(xml|txt|html|js|css)$">
    ExpiresDefault A7200
    Header append Cache-Control "proxy-revalidate"
</FilesMatch>

# Force no caching for dynamic files
<FilesMatch "\.(php|cgi|pl|htm)$">
    ExpiresActive Off
    Header set Cache-Control "private, no-cache, no-store, proxy-revalidate, no-transform"
    Header set Pragma "no-cache"
</FilesMatch>
0 голосов
/ 17 апреля 2017

У меня была такая же проблема в течение долгого времени, и я только что нашел хитрость!

После просмотра .htaccess, расположенного в корневом репозитории drupal, возникает следующее условие: <IfModule mod_expires.c> ... </IfModule>

Код, расположенный внутри, не выполняется, потому что apache expires_module просто не включен на моем сервере, проверьтеесли expires_module присутствует в списке, возвращаемом:

sudo apache2ctl -M

Если нет, просто активируйте его:

sudo a2enmod expires
sudo a2enmod headers
sudo service apache2 restart
...