Заранее извиняюсь, если это окажется вопросом новичка. На данный момент мое основное разочарование / забвение проистекает из абсолютно запутанного характера поиска моей конкретной проблемы.
Я использую различные правила htaccess, чтобы гарантировать, что мои css, css изображения и файлы javascript кэшируются. Основываясь на ответах заголовка, которые я получаю в своей сетевой панели Firebug, я уверен, что этот метод работает.
То, что я преследую, после успешного кэширования, это способ предотвратить перерисовку глобальных элементов сайта (заголовок, меню и т. Д.) При переходе от страницы к странице. Это явление прекрасно выражено на следующих сайтах:
http://www.alistapart.com/
jessicahisch - точка - com также является ярким примером.
Обратите внимание, что при переходе из раздела в раздел, публикации в публикацию, в любом месте и в любом месте (с одинаковым глобальным макетом) единственными частями страницы, которые обновляются / перерисовываются, являются элементы, уникальные для этой целевой страницы.
Как правило, я бы объяснил это спецификой браузера (например, Safari подделывает это явление довольно хорошо, независимо от способа реализации, разработанного разработчиками, в то время как Firefox кажется немного менее прощающим), однако эти два сайта, в частности, абсолютно последовательны в своей схеме загрузки страниц на страницу.
В моем собственном примере сайта это дрянь. Когда я думаю, что все работает так, как я хочу, я получу страницу перезагрузить / перерисовать / перестроить. Изучение панели NET показывает, что это происходит независимо от того, загружены мои внешние ресурсы CSS / Image или нет.
Я включил правила, которые я использую, в свои файлы htaccess для справки.
Большое спасибо заранее за помощь в этом каверзном вопросе. Хотя ответ очень ценится, приветствуются даже предложения по эффективному поиску этой проблемы в сети.
#### CACHING ####
# YEAR
<FilesMatch "\.(flv|gif|jpg|jpeg|png|ico)$">
Header set Cache-Control "max-age=2592000"
</FilesMatch>
# WEEK
<FilesMatch "\.(js|css|pdf|swf)$">
Header set Cache-Control "max-age=604800"
</FilesMatch>
# 10 minutes
<FilesMatch "\.(html|htm|txt)$">
Header set Cache-Control "max-age=600"
</FilesMatch>
# DONT CACHE
<FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
Header set Cache-Control "private, max-age=0, must-revalidate"
Header set Connection "keep-alive"
# Header set Pragma "cache"
</FilesMatch>
<FilesMatch "\.(ico|pdf|flv|jpg|JPG|jpeg|png|gif|js|css|swf)(\.gz)?$">
Header set Expires "Thu, 15 Apr 2012 20:00:00 GMT"
Header unset ETag
FileETag None
</FilesMatch>
# enable expirations
ExpiresActive On
# expire GIF images after a month in the client's cache
ExpiresByType image/gif A2592000
# HTML documents are good for a week from the
# time they were changed
ExpiresByType text/html M604800
# expire CSS images after a month in the client's cache
ExpiresByType text/css A2592000
RewriteRule css[\.][0-9]+/(.*)$ css/$1 [L]