- Кэш браузера
- Что такое кэш браузера?
- Как включить кэширование в браузере
- Изменение заголовков запроса
- Кэширование браузера через файл .htaccess
- Как установить время кэширования для различных типов файлов
- Метод альтернативного кэширования для .htaccess
- Cache-Control
- Как работает Cache-Control
- Общая проблема кэширования
- Цифровой отпечаток URL
- Методы кэширования
- Почему htaccess не устанавливает время хранения кеша?
- кэширование браузера htaccess не работает
- .htaccess сжатие страницы и кэширование статических файлов
- Рекомендуемые сообщения
- Для публикации сообщений создайте учётную запись или авторизуйтесь
- Создать учетную запись
- Войти
- Похожий контент
- Последние посетители 0 пользователей онлайн
Кэш браузера
Что такое кэш браузера?
- htaccess кэширование сохраняет содержимое веб-страницы на локальном компьютере, когда пользователь посещает ее;
- Использование кэша браузера – веб-мастер дает указания браузерам, как следует рассматривать ресурсы.
Когда браузер отображает веб-страницу, он должен загрузить логотип, CSS файл и другие ресурсы:
Кэш браузера « запоминает » ресурсы, которые браузер уже загрузил. Когда посетитель переходит на другую страницу сайта, логотип, CSS файлы и т.д. не должны загружаться снова, потому что браузер уже « запомнил » их ( сохранил ). В этом заключается причина того, почему во время первого посещения загрузка веб-страницы занимает больше времени, чем при повторных.
Когда вы используете кэширование, файлы веб-страницы будут сохранены в кэше браузера. Страницы будут загружаться в разы быстрее при повторных посещениях. Также будет с другими страницами, которые используют одни ресурсы.
Как включить кэширование в браузере
- Измените заголовки запроса ресурсов, чтобы использовать кэширование;
- Оптимизируйте свою стратегию кэширования.
Изменение заголовков запроса
Для большинства людей единственный способ кэширования сайта htaccess заключается в том, чтобы добавить код в файл .htaccess на веб-сервере.
Файл .htaccess контролирует многие важные настройки для вашего сайта.
Кэширование браузера через файл .htaccess
Приведенный ниже код указывает браузеру, что именно кэшировать и как долго это « запоминать «. Его следует добавить в начало файла .htaccess :
Сохраните файл .htaccess , а затем обновите веб-страницу.
Как установить время кэширования для различных типов файлов
В приведенном выше коде заданы промежутки времени. Например, 1 year ( 1 год ) или 1 month ( 1 месяц ). Они связаны с типами файлов. Приведенный выше код устанавливает, что .jpg файлы ( изображения ) следует кэшировать в течение года.
Если бы вы хотели изменить это, чтобы и JPG изображения кэшировались в течение месяца, то вы бы просто заменили « 1 год » на « 1 месяц «. Указанные выше значения кэширования через htaccess оптимальны для большинства веб-страниц.
Метод альтернативного кэширования для .htaccess
Описанный выше метод называется « Expires «, он помогает с кэшированием большинству новичков. После того, как вам станет проще работать с кэшированием, можете попробовать другой метод кэширования Cache-Control , который дает больше возможностей.
Возможно, что метод Expires не сработает на вашем сервере, в этом случае вы возможно захотите попробовать использовать Cache-Control .
Cache-Control
Этот метод позволяет получить больше контроля над кэшированием страниц в браузере, но многие считают, что проще прописать все настройки один раз.
Пример использования в файле .htaccess :
Приведенный выше код устанавливает заголовок Cache-Control в зависимости от типа файла.
Как работает Cache-Control
Рассмотрим упомянутую выше строку кода кэширования в браузере htaccess :
Данная строка — просто примечание. Файл .htaccess игнорирует строки, начинающиеся с символа # . Это примечание рекомендуется, так как у вас может быть несколько различных наборов данных в качестве решения для кэширования файлов:
Упомянутая выше строка говорит, что, « если файл будет одним из этих типов, то мы сделаем что-то с ним… »
Самое важное в этой строке то, что в ней перечислены различные типы файлов ( CSS , JS , JPEG , PNG и т.д. ) и что инструкции кэширования следует применять к этим типам файлов. Например, если вы не хотите, чтобы JPG файлы кэшировались в течение указанного периода времени, можете удалить « JPG «. Если вы хотите добавить HTML , то нужно в этой строке указать « HTML «:
В упомянутой выше строке установлены фактические заголовки и значения:
- Часть « Header set Cache-Control » — устанавливает заголовок;
- Переменная « max-age=2592000 » – указывает, сколько времени займет процесс кэширования ( в секундах ). В этом случае мы осуществляем кэширование в течение одного месяца ( 2592000 ) секунд;
- Часть « public » сообщает о том, что это общедоступно.
Эта строка кэширования через htaccess закрывает оператор и заканчивает блок кода.
Общая проблема кэширования
Если вы составляете список изображений, которые будут кэшироваться в течение года и более, помните, что если вы вносите изменения в свои страницы, они могут быть не видны всем пользователям. Так как пользователи обратятся к кэшируемым файлам, а не к существующим. Если есть файл, который вы периодически редактируете ( например — файл CSS ),то можно преодолеть проблему кэша с помощью цифрового отпечатка URL .
Цифровой отпечаток URL
Получение нового (некэшируемого) файлового ресурса возможно при наличии уникального имени. Например, если файл CSS назван «main.css», то вместо этого мы могли бы назвать его «main_1.css». В следующий раз, когда мы поменяем его имя, мы можем назвать файл «main_2.css». Это полезно для файлов, которые периодически изменяются.
Методы кэширования
При кэшировании файлов htaccess необходимо указать один заголовок из пары Expires или Cache-Control max-age, а также один из заголовков Last-Modified или ETag для всех кэшируемых ресурсов. Использовать и Expires, и Cache-Control: max-age излишне, как и Last-Modified и ETag одновременно.
Источник
Почему htaccess не устанавливает время хранения кеша?
Всем привет. Есть сайт www.alexeydev.com
Сайт на WP и проблема в том, что я прописал время хранение кеша в htaccess
Но когда я смотрю в заголовки, там стоит какая-то дефолтная цифра:
В чем может быть проблема?
Спасибо.
- Вопрос задан более трёх лет назад
- 1039 просмотров
Может быть нет модуля? И как следствие ничего не работает, как Вы и попросили.
B еще 1 момент, у Вас на сервере NGIX а значит htaccess вообще может не на что не влиять. Хотя есть конфигурации, где он срабатывает, но вообще htaccess это файл для сервера Apache, а не NGIX. Так что думаю Вам сюда
ну не факт, nginx может проксировать все апачу, так бывает тоже (например, когда сервер ставится однокликом из админпанелей всяких, и обнаруживается, что wp без полного подчинения .htaccess-у не работает — часто просто жмут спец.галку в админке «гнать все через апач», но не заморачиваются выпиливанием нжинкса из цепочки).
ps а еще слышал мнение, что нджинкс перед апачем даже в режиме прозрачного прокси дает какойто гешефт по сравнению с голым апачем. но подробностей не помню, не вникал.
Источник
кэширование браузера htaccess не работает
В моем файле.htaccess игнорируется весь контент кэширования браузера. У меня несколько доменов на одном сервере, и в одном из них один и тот же код работает нормально. Мой инструмент тестирования — WebPageTest.org.
Я прочитал много тем об этой проблеме, но в основном они говорят, что модуль mod_expires деактивирован. Я проверил phpinfo() и этот модуль уже загружен (также mod_deflate и mod_filter).
В следующем потоке кэширование htaccess не работает Anthony Hatzopoulos дает отличный ответ, и я использовал сайт REDbot для анализа моего HTTP-заголовка. Он всегда показывает
Если я установил управление кешем вручную, используя header(«Cache-Control: max-age=2592000»); Заголовок HTTP выглядит нормально, но правила кэширования браузера из.htaccess по-прежнему игнорируются.
Я не понимаю, почему Cache-Control использует no-store, no-cache. по умолчанию и где я могу его изменить. Кроме того, я заметил, что модуль mod_header не указан в моем phpinfo() и тег FileMatch вызывает внутреннюю ошибку сервера без проверки ifModule mod_header . Но если это проблема, почему же тот же скрипт работает в другом домене?
Изменить с 21.06.2017:
Я забыл сказать, что мы используем CDN (Cloudflare). Я анализировал больше заголовков с REDbot и Cache-Control, кажется правильным (png, Cache-Control: public, max-age=2592000 ). В моем результате WebPageTest он всегда показывает WARNING — (4.0 hours) — (. ).png . Либо CDN переписывает заголовок, либо testresult просто ошибается?!
Источник
.htaccess сжатие страницы и кэширование статических файлов
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Войти
Уже есть аккаунт? Войти в систему.
Похожий контент
Кто-нибудь знает, как сделать авторизованный доступ по логину и паролю к динамическому адресу (url) ocStore с помощью файла .htaccess?
Например, такого типа: https://site.com/index.php?route=account/login.
Нахожу только способы сделать авторизацию на папку (директорию) или файл.
Для авторизованного доступа в папку (директорию) необходимо создать файл .htpasswd с логином и паролем в формате user:password (в целях безопасности пароли лучше зашифровать, например, с помощью специальных сервисов генерации записей, например, такого) и отдельный файл .htaccess в корне папки, которую нужно запаролить, следующего содержания:
AuthType Basic AuthName “” AuthUserFile /путь_до_файла/с_логином_и_паролем/от_корня_сервера/.htpasswd Require valid-user
Для запароливания файла, также необходимо создать файл .htpasswd с логином и паролем в формате user:password, как описано выше, а в основной файл .htaccess (в корне сайта) добавить следующие строки:
resides AuthType Basic AuthName “Для доступа в эту директорию требуется авторизация. Введите логин и пароль.” AuthUserFile /путь_до_файла/с_логином_и_паролем/от_корня_сервера/.htpasswd AuthGroupFile /dev/null Require valid-user
Для запароливания адреса (url) решения не могу найти.
Заранее спасибо.
Подскажите файл .htaccess ставит код для блокировки индексации. Яндекс.Вебмастер пишет ошибку 403. Я меняю .htaccess, а через какое то время все возвращается. В чем может быть проблема?
# 1.To use URL Alias you need to be running apache with mod_rewrite enabled.
# 2. In your opencart directory rename htaccess.txt to .htaccess.
# For any support issues please visit: http://www.opencart.com
Options +FollowSymlinks
# Prevent Directory listing
Options -Indexes
# Prevent Direct Access to files
Require all denied
## For apache 2.2 and older, replace «Require all denied» with these two lines :
# Order deny,allow
# Deny from all
# SEO URL Settings
RewriteEngine On
# If your opencart installation does not run on the main web folder make sure you folder it does run in ie. / becomes /shop/
RewriteBase /
RewriteRule ^sitemap.xml$ index.php?route=extension/feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=extension/feed/google_base [L]
RewriteRule ^system/storage/(.*) index.php?route=error/not_found [L]
RewriteCond %
RewriteCond %
RewriteCond %
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
### Additional Settings that may need to be enabled for some servers
### Uncomment the commands by removing the # sign in front of it.
### If you get an «Internal Server Error 500» after enabling any of the following settings, restore the # as this means your host doesn’t allow that.
# 1. If your cart only allows you to add one item at a time, it is possible register_globals is on. This may work to disable it:
# php_flag register_globals off
# 2. If your cart has magic quotes enabled, This may work to disable it:
# php_flag magic_quotes_gpc Off
# 3. Set max upload file size. Most hosts will limit this and not allow it to be overridden but you can try
# php_value upload_max_filesize 999M
# 4. set max post size. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value post_max_size 999M
# 5. set max time script can take. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value max_execution_time 200
# 6. set max time for input to be recieved. Uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value max_input_time 200
# 7. disable open_basedir limitations
# php_admin_value open_basedir none
SetEnvIfNoCase User-Agent «^Yandex» search_bot
SetEnvIfNoCase User-Agent «^Yahoo» search_bot
SetEnvIfNoCase User-Agent «^Googlebot» search_bot
SetEnvIfNoCase User-Agent «^Aport» search_bot
SetEnvIfNoCase User-Agent «^msnbot» search_bot
SetEnvIfNoCase User-Agent «^spider» search_bot
SetEnvIfNoCase User-Agent «^Robot» search_bot
SetEnvIfNoCase User-Agent «^php» search_bot
SetEnvIfNoCase User-Agent «^Mail» search_bot
SetEnvIfNoCase User-Agent «^bot» search_bot
SetEnvIfNoCase User-Agent «bot» search_bot
SetEnvIfNoCase User-Agent «^igdeSpyder» search_bot
SetEnvIfNoCase User-Agent «^Snapbot» search_bot
SetEnvIfNoCase User-Agent «^WordPress» search_bot
SetEnvIfNoCase User-Agent «^BlogPulseLive» search_bot
SetEnvIfNoCase User-Agent «^Parser» search_bot
SetEnvIfNoCase User-Agent «^Googlebot-Image» search_bot
SetEnvIfNoCase User-Agent «^StackRambler» search_bot
SetEnvIfNoCase User-Agent «^Adsbot-Google» search_bot
SetEnvIfNoCase User-Agent «^WebAlta» search_bot
SetEnvIfNoCase User-Agent «^Googlebot-Mobile» search_bot
SetEnvIfNoCase User-Agent «^YandexImages» search_bot
SetEnvIfNoCase User-Agent «http://www.google.com/bot.html» search_bot
Order Allow,Deny
Allow from all
Deny from env=search_bot
Всем доброго воскресного дня
Решил прогнать сайт через NetPeak Spider на наличие пробелов в работе сайта, битых ссылок и тд. В ответ он выдает критическую ошибку редиректа с http на https, по https ответ NULL.
Сайт доступен, при прогоне на ответ сервера в вебмастере отвечает что все гут, с Джет Кешем время 260 сек. Не могу понять в чем проблема. Возможно неверно настроен .htaccess? Прошу опытных коллег помочь, ибо в php и настройках серверов не силен.
Ниже привожу текст .htaccess
ServerSignature Off
# 1.To use URL Alias you need to be running apache with mod_rewrite enabled.
# 2. In your opencart directory rename htaccess.txt to .htaccess.
# For any support issues please visit: http://www.opencart.com
Options +FollowSymlinks
# Prevent Directoy listing
Options -Indexes
# Prevent Direct Access to files
Require all denied
## For apache 2.2 and older, replace «Require all denied» with these two lines :
# Order deny,allow
# Deny from all
# SEO URL Settings
RewriteEngine On
# If your opencart installation does not run on the main web folder make sure you folder it does run in ie. / becomes /shop/
RewriteBase /
RewriteCond %
RewriteRule .* /$0 [R=301,L]
RewriteCond %
RewriteRule .* https://%
RewriteCond %
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteRule ^sitemap.xml$ index.php?route=extension/feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=extension/feed/google_base [L]
RewriteRule ^system/download/(.*) index.php?route=error/not_found [L]
RewriteCond %
RewriteCond %
RewriteCond %
#RewriteRule ^page/([^/\.]+)/?$ page=$1 [L]
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
RewriteCond %
RewriteRule . %1 [R=301,L]
### Additional Settings that may need to be enabled for some servers
### Uncomment the commands by removing the # sign in front of it.
### If you get an «Internal Server Error 500» after enabling any of the following settings, restore the # as this means your host doesn’t allow that.
# 1. If your cart only allows you to add one item at a time, it is possible register_globals is on. This may work to disable it:
# php_flag register_globals off
# 2. If your cart has magic quotes enabled, This may work to disable it:
# php_flag magic_quotes_gpc Off
# 3. Set max upload file size. Most hosts will limit this and not allow it to be overridden but you can try
# php_value upload_max_filesize 999M
# 4. set max post size. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value post_max_size 999M
# 5. set max time script can take. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value max_execution_time 200
# 6. set max time for input to be recieved. Uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value max_input_time 200
php_value memory_limit 250M
# 7. disable open_basedir limitations
# php_admin_value open_basedir none
### Display PHP errors
### Uncomment the commands by removing the # sign in front of it.
# php_flag display_startup_errors on
# php_flag display_errors on
# php_flag html_errors on
# php_flag track_errors on
# php_value error_reporting «E_ALL»
### Сжать ответ сервера для перечисленных MIME типов
#
#
# AddOutputFilterByType DEFLATE text/plain text/html
# AddOutputFilterByType DEFLATE text/css
# AddOutputFilterByType DEFLATE text/javascript application/javascript application/x-javascript
# AddOutputFilterByType DEFLATE text/xml application/xml application/xhtml+xml application/rss+xml
# AddOutputFilterByType DEFLATE application/json
# AddOutputFilterByType DEFLATE application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon
#
#
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
### Способ #1
### Подсказать браузеру схему кеширования через заголовки в ответе сервера
# 43200 — день, 604800 — неделя, 2592000 — месяц
Header set Cache-Control «max-age=2592000»
#Header unset Last-Modified
Header add Cache-Control «max-age=43200»
Header set Cache-Control «max-age=2592000»
# отключить кэширование
Header unset Cache-Control
### Способ #2
### Подсказать браузеру схему кеширования через заголовки в ответе сервера
# Enable expires
ExpiresActive On
# Default a cache expiration
ExpiresDefault «access plus 10 month»
# Images
ExpiresByType image/gif «access plus 1 month»
ExpiresByType image/png «access plus 1 month»
ExpiresByType image/jpg «access plus 1 month»
ExpiresByType image/jpeg «access plus 1 month»
# CSS, JavaScript
ExpiresByType text/css «access plus 1 year»
ExpiresByType application/javascript «access plus 1 year»
ExpiresByType text/javascript «access plus 1 year»
### Удалить заголовок ETag (иначе есть проблемы с кешированием при включенном сжатии)
Header unset ETag
FileETag None
Последние посетители 0 пользователей онлайн
Ни одного зарегистрированного пользователя не просматривает данную страницу
Источник