22  /  25

Работа с кешем

Просмотров: 8002 (Статистика ведётся с 06.02.2017)
Роберт Басыров
Сложность урока:
2 уровень - несложные понятия и действия, но не расслабляйтесь.
1
2
3
4
5
  • Сброс кеша
  • Сброс кеша с помощью API
  • Указание времени жизни кеша с помощью API
  • Использование кеша браузера и SQL-базы
  • Полное кеширование шаблона компонента
  • Как отменить композитное кеширование в любом месте страницы
  • Сброс кеша

    Если возникла потребность сбросить кеш, то рекомендуется это сделать с помощью ссылки Сбросить кеш на странице настроек.

    При изменении шаблона сайта рекомендуется сбрасывать уже созданный композитный кеш. Это можно сделать с помощью запуска агентов из cron. Создан специальный файл cron_html_pages.php, который надо запустить. Он лежит по адресу: www/bitrix/modules/main/tools/cron_html_pages.php.

    Пример команды, которая удалит все файлы кеша, созданные ранее чем 10 часов назад:
    php -f  /path/to/site/bitrix/modules/main/tools/cron_html_pages.php 10

    Не рекомендуется сброс кеша вручную путём удаления папки с кешем страниц /bitrix/html_pages/<domain>/. В этом случае возможна ситуация, когда кеш перестанет создаваться, если до сброса кеша произошло превышение квоты на композитный кеш. По логу эту ошибку отследить не удастся. Если всё же вы прибегаете к этой операции, то одновременно с этим очистите содержимого файла bitrix/html_pages/.enabled, чтобы сбросить статистику.


    Сброс кеша с помощью API

    Для сброса кеша с помощью API необходимо использовать метод \Bitrix\Main\Data\StaticHtmlCache:

    $staticHtmlCache = \Bitrix\Main\Data\StaticHtmlCache::getInstance();
    $staticHtmlCache->deleteAll();

    Указание времени жизни кеша с помощью API

    Если вызвать метод setAutoUpdate(false), то на странице не будет аяксового хита вообще. В этом случае setAutoUpdateTTL позволяет указать время сброса кеша. Этот способ - аналог настроек в админке, только для конкретной страницы.


    Использование кеша браузера и SQL-базы

    Пример использования рассмотрим на примере шаблона компонента Корзина. Код разметки аналогичен первому варианту разметки шаблона компонента Авторизация, но дополнительно указано методом setBrowserStorage использование браузера как локального хранилища динамичного контента. Это нужно в случаях когда пользователь уже ходил по интернет-магазину, и положил в корзину какое-то число товаров. В этом случае при загрузке страницы система будет использовать кеш браузера и отобразит последнее число товаров этого пользователя до момента получения актуальных данных с веб-сервера.

    Данные в локальном хранилище:

    Контент динамических областей пишется в SQL-базу. Но не по умолчанию, а по указанию:

    $frame = $this->createFrame()->begin();
    $frame->setBrowserStorage(true);

    Примечание: Использование SQL базы не будет работать в Internet Explorer и Firefox, т.к. эти браузеры не поддерживают SQLite. Так как ситуация с браузерами меняется, то советуем ситуацию с поддержкой отслеживать постоянно.


    Полное кеширование шаблона компонента

    Если необходимо, чтобы кешировался весь контент шаблона и потом обновлялся, то необходимо весь код шаблона вставить в $this->createFrame()->begin();. В таком случае вся информация будет кешироваться и затем обновляться на втором хите:

    $frame = $this->createFrame()->begin();
          // статический и динамический контент
    $frame->end();
    


    Как отменить композитное кеширование в любом месте страницы

    \Bitrix\Main\Data\StaticHtmlCache::getInstance()->markNonCacheable();
    8
    Курсы разработаны в компании «1С-Битрикс»

    Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
    Развернуть комментарии