Некоторые вопросы по абсолютному, оптимальному использованию кеширования динамического и статического кеша.
В настоящее время мой htaccess
настроен, как показано ниже, и у меня такое чувство, что я использую его неправильно ... Любые ваши предложения по улучшению я вижу как ответы! Очень признателен!
Вопрос 1: любые предложения относительно того, что мне следует изменить, чтобы сделать кеширование более правильным на двух уровнях (#### динамический / #### статический)
Вопрос 2: что делают эти IF-теги: <IfModule mod_headers.c> ... </IfModule>
Целесообразно оставить или нет? Без него вроде тоже работать. Есть ли преимущества в скорости при использовании этого?
Вопрос 3: Стоит ли использовать оба ExpiresDefault M7200
и Header set Cache-Control "max-age=7200"
или подойдет любой?
<IfModule mod_headers.c>
ExpiresActive On
Header unset ETag
FileETag None
Header unset Pragma
ExpiresDefault M14515200
##### DYNAMIC PAGES
<FilesMatch "\\.(htm|php)$">
ExpiresDefault M7200
Header set Cache-Control "max-age=7200"
</FilesMatch>
##### STATIC FILES
<FilesMatch "\\.(ico|jpg|png|gif|svg|swf|css|js|fon|ttf|eot|xml|pdf|flv)$">
ExpiresDefault M14515200
Header set Cache-Control "max-age=14515200"
</FilesMatch>
</IfModule>
Чтобы сначала ответить на вопрос 2, необходимо указать оболочку <IfModule>, чтобы ваша конфигурация по-прежнему работала (хотя и без битов, устанавливающих заголовки) на экземпляре Apache, который не включает mod_headers. Без оболочки экземпляр Apache без mod_headers завершился бы ошибкой при запуске.
Для вопроса 3 веб-серверы устанавливают заголовки Expires и Cache-Control, потому что история кэширования заголовков длинная и запутанная, и охват обоих из них - лучший способ заставить как можно больше конечных пользователей уважать время жизни вашего кеша. В 99% случаев любого из них будет достаточно (в этом случае вы можете также использовать max-age и направить рабочую нагрузку ЦП для определения того, что будет 7200 минут с этого момента, на браузер пользователя, а не на ваш сервер).
Что касается вопроса 1, если ваши страницы .htm и .php действительно динамические (содержимое зависит от того, кем является пользователь или что он делает), то вам вообще не следует разрешать их кэширование. Файлы .xml часто создаются вашим кодом, и если да, то их, вероятно, следует включать в динамический, а не статический контент. И это нормально - дать вашим «статическим» файлам такой долгий срок службы, если вы предприняли шаги, чтобы гарантировать, что они действительно статичны, и вы никогда не сможете изменить содержимое файла, сохранив то же имя файла. В частности, если вы измените файлы JavaScript или CSS, пользователи увидят неожиданные результаты в зависимости от того, что они кэшировали, а что нет.