Включить кеш браузера для html сайта

Тема в разделе "Mod Rewrite / htaccess / ЧПУ", создана пользователем DataPro, 24 сен 2015.

  1. DataPro

    DataPro Natapro

    Регистр.:
    21 авг 2009
    Сообщения:
    180
    Симпатии:
    68
    Здравствуйте, создал сайт на штмл, без движков.
    Задался вопросом прикрепить к нему кеш что-бы оптимизировать скорость отображения.
    Подскажите как это правильно сделать. сайт состоит с 1 html страницы.
    Подскажите что нужно прописать в .htaccess
    И что нужно прописать на странице, что б .htaccess следил за её обновлениями и обновлял кеш.
    Читал что можно указать время последнего редактирования, и постоянно его менять, этим самым кеш так же будет постоянно обновляться.

    Буду признателен за примеры.


    Нашел один пример .htaccess но, не знаю верный ли он, и что прописать в штмл странице что б она с ним взаимодействовала.
    Код:
    # кеширование в браузере на стороне пользователя
    <IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access 7 days"
    ExpiresByType application/javascript "access plus 1 year"
    ExpiresByType text/javascript "access plus 1 year"
    ExpiresByType text/css "access plus 1 year"
    ExpiresByType text/html "access plus 7 day"
    ExpiresByType text/x-javascript "access 1 year"
    ExpiresByType image/gif "access plus 1 year"
    ExpiresByType image/jpeg "access plus 1 year"
    ExpiresByType image/png "access plus 1 year"
    ExpiresByType image/jpg "access plus 1 year"
    ExpiresByType image/x-icon "access 1 year"
    ExpiresByType application/x-shockwave-flash "access 1 year"
    </IfModule>
    # Cache-Control
    <ifModule mod_headers.c>
    # 30 дней
    <filesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|swf)$">
    Header set Cache-Control "max-age=2592000, public"
    </filesMatch>
    # 30 дней
    <filesMatch "\.(css|js)$">
    Header set Cache-Control "max-age=2592000, public"
    </filesMatch>
    # 2 дня
    <filesMatch "\.(xml|txt)$">
    Header set Cache-Control "max-age=172800, public, must-revalidate"
    </filesMatch>
    # 1 день
    <filesMatch "\.(html|htm|php)$">
    Header set Cache-Control "max-age=172800, private, must-revalidate"
    </filesMatch>
    </ifModule>
    # использование кеша браузеров
    FileETag MTime Size
    <ifmodule mod_expires.c>
    <filesmatch ".(jpg|jpeg|gif|png|ico|css|js)$">
    ExpiresActive on
    ExpiresDefault "access plus 1 year"
    </filesmatch>
    </ifmodule>
    #Запрет отдачи HTTP-заголовков Vary браузерам семейства MSIE
    <IfModule mod_setenvif.c>
    BrowserMatch "MSIE" force-no-vary
    BrowserMatch "Mozilla/4.[0-9]{2}" force-no-vary
    </IfModule>

     
  2. Theos

    Theos Постоялец

    Регистр.:
    8 май 2015
    Сообщения:
    64
    Симпатии:
    80
    Пример отличный! Его и юзай. Только предварительно протестируй заголовки каким нибуть сервисом типа http://www.cy-pr.com/tools/header/
    на предмет отдаваемыми апаче датами.
     
  3. mSnus

    mSnus Создатель

    Регистр.:
    4 дек 2015
    Сообщения:
    24
    Симпатии:
    5
    Во-первых, html-страница никак с этим всем не взаимодействует.

    Браузер проверяет, есть ли у него в кеше страница с вашего сайта. Он запрашивает сервер, тот отвечает "да ну, новая тебе не нужна, она тут не будет меняться до max-age", и браузер показывает старую копию.
    Можно просто поставить всем
    Header set Cache-Control "max-age=2592000, public"

    и не делать такой длинный конфиг.

    Вообще сервер на чистых html-ках и так должен летать, если их там не сто миллионов в минуту запрашивается. Чтобы это ускорить ещё, нужно ставить кеш на стороне сервера, который html-ки будет держать в памяти, а не читать их с диска каждый раз. Какой-нибудь memcached, или SSD воткнуть, если там обычный HDD, но мне кажется, это не тот случай.
     
  4. mSnus

    mSnus Создатель

    Регистр.:
    4 дек 2015
    Сообщения:
    24
    Симпатии:
    5
    Если на чистых html-ках, то можно это прописать в head вообще без .htaccess:
    HTML:
    <meta http-equiv="Cache-Control" content="max-age=36000, must-revalidate" />