Не сбрасывается кэш битрикс
Аналогом CPHPCache в D7 является класс \Bitrix\Main\Data\Cache. Основные различия в методах в том, что названия методов нового класса пишутся с прописной буквы в соответствии с новыми требования оформления кода. В остальном внешне изменений практически нет:
Описание параметров метода initCache:
2 ответа 2
Автоматический сброс кэша не работает, потому что стандартные функции редактирования инфоблоков ничего не знают о вашем компоненте и его кэшах и не догадываются, что их нужно сбрасывать. Повесьте обработчик на события OnAfterIBlockElementAdd и OnAfterIBlockElementUpdate. Пусть он смотрит, не происходят ли изменения в вашем инфоблоке и при если да, то сбрасывает кэш.
Не согласен. Система так или иначе знает о компоненте. Сам компонент использует стандартные классы компонента (наследуется), где идут проверки. К тому же компонент отвечает за вывод инф-и и просто смотрит есть ли валидный кеш, а если нету, то создает новый. Так что функ-л и ожидаемая работа автокеш-я скорее относится именно к кеширо-ю, а оно завязано на стандартные инфоблоки (которые я не трогал). Сброс тегированного кеша через события я сделал сразу, но это не хваленное автокеширование. Скорее всего вся проблема в d7. Если использовать старые методы ядра, думаю автокеширование заработает.
После проверки старта кеша добавьте регистрацию тега для кеша (перед этим в админке необходимо включить управляемое кеширование, а в коде объявить глобальную переменную $CACHE_MANAGER).
Теперь кеш компонента будет сбрасываться автоматически после изменения инфоблока
Если нужно, чтобы сбрасывался кеш только при изменении конкретного элемента, то зарегистрируйте уникальный тэг для этого элемента по тому же принципу, как я показал выше, а через обработчики OnAfterIBlockElementUpdate, OnAfterIBlockElementAdd, OnAfterIBlockElementDelete сбрасывайте кеш
По умолчанию Битрикс использует файловы кеш. Чтобы его "почистить", необходимо удалить все файлы в папке /bitrix/cache/. Это можно сделать из панели администратора, в разделе "Автокеширование"-> "очистка файлов кеша". Но удаляются они очень долго. Как же быстро удалить все файлы кеша Битрикса?
Есть один способ. Достаточно выполнить PHP код:
Он промаркирует все файлы кеша битрикса на удаление. В конце названий всех файлов кеша появится приписка из точки, тильды и длинного числа типа: ".
7894561". Получается, что после такой маркировки пути к файлам кеша изменятся, следовательно весь старый кеш сайта не будет восприниматься. Это можно считать за моментальную очистку кеша битрикса. Остаётся только удалить эти файлы. И система сама это сделает: по агентам на хитах или кроне. Причём порциально, по несколько файлов за итерацию. Что довольно долго.
Преимущество такого метода перед стандартным — не надо держать окно браузера открытым и ждать пока файлы удалятся. Недостаток — целый день система будет занята удалением файлов в теневом режиме. Можно ли ей помочь? Часто хочется ускорить процесс, ведь загружать систему тупой работой по самоочистке не разумно. Для этого необходимо дать команду через ssh:
rm -rf /путь_к_сайту_на_сервере/bitrix/cache/*.
Такая команда быстро удалит все файлы, которые находятся в папке /bitrix/cache/ и имеют в своём названии точку с тильдой ".
", т.е. именно маркированные на удаление файлы.
В "Битрикс окружение" путь к файлам кеша будет иметь вид:
Если разобраться в содержании этой команды:
rm — удалить файл/папку
-r — Рекурсивное удаление каталогов. Если не поставить этот ключ, то произойдёт удаление только файлов в корневой папке /cache/, но не файлов, вложенных в папки (к примеру, /cache/s1/). одним словом, никакие папки не удалятся.
-f — означает "не спрашивать подтверждение на удаление". Если не поставить этот ключ, то система будет спрашивать действительно ли мы хотим удалить каждый файл. А их там тысячи! Лучше его поставить.
Управляемый кеш
Также в D7 появился удобный доступ к управляемому кешу, объект для управления кешем можно получить из объекта приложения:
$cache является объектом \Bitrix\Main\Data\ManagedCache.
Для принудительной очистки кеша по ключу используем:
Удаление (сброс) кэша технологии «Композитный сайт» в 1C-Bitrix
Или через API, выполнив следующий PHP-код по пути «Настройки» – «Инструменты» – «Командная PHP-строка»:
Или через планировщик заданий (Cron), указав выполнение следующей команды в заданный промежуток времени:
Удаление (сброс) кэша в 1C-Bitrix через панель управления сайтом
Начнем со стандартного способа очистки кэша в 1C-Bitrix.
2. В левом меню откройте раздел «Настройки», а в появившемся меню перейдите в «Настройки продукта» – «Автокеширование».
3. На открывшейся странице переключитесь на вкладку «Очистка файлов кеша», где отмечаете нужный вариант и жмете «Начать».
Доступные варианты и их пояснения:
- Только устаревшие – файлы, у которых закончилось время жизни;
- Все – все файлы кэша;
- Меню – закэшированные меню сайта;
- Весь управляемый – все файлы из папки /bitrix/managed_cache/;
- Все страницы HTML кеша – кэшированные страницы, созданные технологией «Композитный сайт».
Помимо этого, кэш можно сбросить для конкретной страницы, посетив ее под профилем администратора:
А также для отдельного компонента в его настройках, вызвав соответствующую опцию в режиме правки.
Как очистить (удалить) кэш сайта в 1C-Bitrix?
В 1C-Bitrix, как, собственно, и в других популярных на момент написания статьи CMS, существует своя система кэширования данный сайта. При внесении изменений в тему сайта или какого-либо его компонента необходимо чистить этот кэш для получения актуальной информации.
Существует несколько разных способов, которые решают поставленную в заголовке этой статьи задачу, поэтому подробно рассмотрим каждый из них.
5. Заключение
Смысл статьи не в научном открытии или какой-то доселе неведомой технологии, а демонстрации простоты решений.
Да, я коснулся лишь малой части кеширования. Для простоты восприятия пусть будет этот минимум.
Если у вас есть примеры, как можно использовать данный стандартный функционал, то пишите комментарии. Если есть примеры нестандартных решений — делитесь опытом.
Курс предназначен для базовой подготовки администраторов сайтов, созданных на "1С-Битрикс: Управление сайтом". Изучив курс, вы освоите основные методы администрирования системы, а также пополните знания по темам, изученным в курсе Контент-менеджер.
Если вы добросовестно изучите курс, то научитесь:
- управлять доступом к системе, сайтами, пользователями, группами пользователей;
- работать с инструментами системы;
- использовать возможности интерфейса по управлению системой;
- работать с модулями "1С-Битрикс: Управление сайтом", связанными с оптимизацией и безопасностью работы сайта;
- выполнять работу по конфигурированию веб-системы для оптимальной работы.
Если вам предстоит самостоятельная установка системы или перенос сайта на хостинг, то без курса Установка и настройка Курс Установка и настройка предназначен для специалистов устанавливающих "1С-Битрикс: Управление сайтом" или "Битрикс24 в коробке".
Начальные требования
Необходимый минимум знаний для изучения курса:
- базовые навыки компьютерной грамотности и навыки работы с ОС Windows;
- базовые знания о WWW и организации доступа к веб-серверу;
- знание системы в рамках курса Контент-менеджер Мы считаем, что вы этот курс уже прошли и знаете многое о Битриксе. Поэтому подсказок во всплывающих окнах будет намного меньше, чем в курсе Контент-менеджер. , чтобы банально не путаться в интерфейсе.
Неплохо было бы иметь базовые навыки установки и администрирования *nix-систем.
У нас часто спрашивают, сколько нужно заплатить
Курс полностью бесплатен. Изучение курса, прохождение итоговых тестов и получение сертификатов - ничего из этого оплачивать не нужно.
Ещё у нас есть Академия 1С-Битрикс, где можно обучиться на платной основе на курсах нашей компании либо наших партнёров.
Баллы опыта
В конце каждого урока есть кнопка Прочитано! . При клике на неё в Вашу итоговую таблицу опыта добавляется то количество баллов, которое указано в прочитанном После нажатия кнопки Прочитано! появится
окно подтверждения:
уроке.
Периодически мы заново оцениваем сложность уроков, увеличивая/уменьшая число баллов, поэтому итоговое количество набранных Вами баллов может отличаться от максимально возможного. Не переживайте! Отличный результат - это если общее число набранных Вами баллов отличается от максимального на 1-2%.
Тесты и сертификат
После изучения курса пройдите тесты на сертификацию. При успешной сдаче последовательности тестов на странице Моё обучение вы увидите результат обучения и там же - ваш сертификат в формате PDF.
Иконка успешно сданного вами курса отображается в вашем профиле на Freelance, если вы укажите ссылку на ваш профиль на сайте компании 1С-Битрикс.
Комментарии к урокам
Для преподавания офлайн
Если данный курс берётся в качестве основы для офлайнового преподавания, то рекомендуемая продолжительность: 3 дня (24 академических часа).
Если нет интернета
iPhone:
FBReader
CoolReader
iBook
Bookmate
Windows:
Calibre
FBReader
Icecream Ebook Reader
Плагины для браузеров:
EpuBReader – для Firefox
Readium – для Google Chrome
iOS
Marvin for iOS
ShortBook
обновляются периодически, поэтому возможно некоторое отставание их от онлайновой версии курса. Версия файла - от 11.04.2022.
Как проходить учебный курс?
В 1C-Bitrix, как, собственно, и в других популярных на момент написания статьи CMS, существует своя система кэширования данный сайта. При внесении изменений в тему сайта или какого-либо его компонента необходимо чистить этот кэш для получения актуальной информации.
Существует несколько разных способов, которые решают поставленную в заголовке этой статьи задачу, поэтому подробно рассмотрим каждый из них.
Как работает кеширование в Bitrix? Всё просто
Данная статья — это не научный прорыв, а лишь помощник, чтобы быстрее понять, как работает стандартный функционал в Bitrix.
Давайте представим, что в разделе каталога у нас 150 запросов к БД. Вроде бы немного при условии, если в один момент обращение к разделу происходит одним пользователем?
При одновременном обращении к разделу 200-т пользователей количество запросов равняется 200 * 150 = 30 000
Кеширование помогает снизить нагрузку на БД и сервер в целом.
Не судите за то, что я использую старое ядро в примере. Суть данной статьи показать, как это работает и потребности темы полностью покрываются.
2. Простое кеширование
Результат выполнения кода — это переменная $arCurSection со значениями полученными из кеша или запросов к БД.
Проблема данного метода в том, что если что-то изменится в инфоблоке, то результат будет нерелевантным. Решение данной проблемы описано в пункте 3.
3. Тегированный кеш
Для того, чтобы решить проблему описанную в пункте 2, надо почистить директорию с кешем /iblock/catalog (путь не относительно корня сайта, а относительно папки с кешем) в момент добавления, изменения, удаления элементов инфоблока и связанных с ним сущностей, которые выводит наш компонент.
Для того, чтобы не изобретать «городушки» для сброса кеша при изменениях, был придуман тегированный кеш.
Для того, чтобы месту хранения кеша присвоить кеш используем это:
Сброс кеша по тегу можно осуществить следующим способом:
В итоге нам нужно лишь в нужный момент (навесить на события) сделать сброс кеша по тегу.
Например, в стандартных компонентах, использующих инфоблок, используется тег вида «iblock_id_17» и по этому тегу вызывается метод сброса кеша, который вызывается в методах добавления, изменения, удаления элемента инфоблока.
Метод из ядра битрикс использующий ClearByTag:
4. Пример нестандартного использования кеша в каталоге
Когда мы знаем, как работает кеширование, то можем легко доработать кеширование у стандартного компонента каталога.
Косяк стандартного решения — при изменении какого-либо элемента сбрасывается весь кеш (элементы, разделы).
Чтобы не заставлять систему лишний раз делать запросы, производить расчеты и набирать кеш, можно для головных разделов предусмотреть отдельный кеш. Вывести из под общего тега-инфоблока.
Тут единственная трудность в том, что бы хорошенечко подумать, в каких местах стоит так сделать.
Вопросы о десктоп-приложении
В этой статье собраны ответы на самые часто задаваемые вопросы о десктоп-приложении.
Есть ли у Битрикс24 десктоп-приложение?
Да, вы можете скачать и установить специальное приложение для ПК на странице загрузки.
Подробнее о работе о том, как скачать или обновить десктоп-приложение читайте в статье:
Белый экран в десктоп-приложении. Что делать?
- Windows: Ctrl + Shift + R
- macOS: cmd + Shift + R
Как очистить кеш в десктоп-приложении?
Для Windows: в открытом приложении нажмите Ctrl + Shift + L . Откроется папка, где находятся логи и данные приложения. Закройте приложение и удалите папку cef_cache.
Для MacOS: для вызова папки, где находятся логи и данные приложения, нажмите cmd+ Shift + L. Закройте приложение и удалите папку cef_cache.
Почему при запуске десктоп-приложения появляется ошибка: "Этот домен отключен или не существует. Проверьте, пожалуйста, возможно, есть ошибка или опечатка в адресе"?
Эта ошибка может возникнуть при запуске приложения, в котором раньше учетная запись портала была активна, а сейчас у вас нет доступа: портал был удален или вас уволили с него.
Найдите иконку десктоп-приложения в верхней панели macOS или в панели уведомлений Windows. Выберите в настройках Сменить пользователя и повторите попытку входа.
Почему не поддерживается файловая система exFAT?
Файловая система exFAT не поддерживает альтернативные потоки данных (alternate data streams), которые используются в приложении Битрикс24 для хранения метаданных, в частности, номера синхронной версии.
Есть ли версии десктоп-приложения для Windows XP или Linux?
Десктоп-приложение Битрикс24 для Windows XP и Linux больше не поддерживается. Вы можете работать в Битрикс24 через браузер.
Минимальные системные требования для десктоп-приложения Битрикс24: macOS 10.10 и выше или Windows 7 SP1 и выше.
Удаление (сброс) кэша в 1C-Bitrix через панель управления сайтом
Начнем со стандартного способа очистки кэша в 1C-Bitrix.
2. В левом меню откройте раздел «Настройки», а в появившемся меню перейдите в «Настройки продукта» – «Автокеширование».
3. На открывшейся странице переключитесь на вкладку «Очистка файлов кеша», где отмечаете нужный вариант и жмете «Начать».
Доступные варианты и их пояснения:
- Только устаревшие – файлы, у которых закончилось время жизни;
- Все – все файлы кэша;
- Меню – закэшированные меню сайта;
- Весь управляемый – все файлы из папки /bitrix/managed_cache/;
- Все страницы HTML кеша – кэшированные страницы, созданные технологией «Композитный сайт».
Помимо этого, кэш можно сбросить для конкретной страницы, посетив ее под профилем администратора:
А также для отдельного компонента в его настройках, вызвав соответствующую опцию в режиме правки.
Управляемый кеш
Также в D7 появился удобный доступ к управляемому кешу, объект для управления кешем можно получить из объекта приложения:
$cache является объектом \Bitrix\Main\Data\ManagedCache.
Для принудительной очистки кеша по ключу используем:
Удаление (сброс) кэша технологии «Композитный сайт» в 1C-Bitrix
Или через API, выполнив следующий PHP-код по пути «Настройки» – «Инструменты» – «Командная PHP-строка»:
Или через планировщик заданий (Cron), указав выполнение следующей команды в заданный промежуток времени:
Удаление (сброс) кэша сайта в 1C-Bitrix через FTP или файловый менеджер
Если по какой-либо из причин у вас нет доступа к панели управления сайтом, очистить кэш можно вручную, удалив все содержимое папок /bitrix/cache/ и /bitrix/managed_cache/ удобным для вас способом.
При использовании технологии «Композитный сайт», дополнительно нужно удалить папку domain и файл .enabled по пути /bitrix/html_pages/, где «domain» – домен вашего сайта, при этом после завершения работа этой функции прекратиться и ее (по необходимости) нужно включить вновь. Сам способ не рекомендуем, используйте его только в случае недоступности панели управления.
Дополнительно: кэш из папки /bitrix/cache/ можно удалить с помощью следующей функции, выполнив ее по пути «Настройки» – «Инструменты» – «Командная PHP-строка»:
В ней «true» – показатель того, что нужно удалить все файлы (в случае с false будут удалены только устаревшие), а «/»– путь к удаляемым файлам кэша относительно /bitrix/cache/.
Если неуправляемый кэш сайта из папки /bitrix/cache/ не удаляется, пропишите в файле dbconn.php, который находит в папке /bitrix/php_interface/ следующие строки:
Таким образом, вы решаете вопрос с правами сервера, которые, в свою очередь, мешают корректному удалению файлов кэша.
1С-Битрикс. Есть инфоблок. Задача: Вывести на страницу текст из свойства элемента.
Написал собственный компонент. Допустим так (укорочено для простоты):
Вызывается компонент просто:
Все работает, компилируется нужный шаблон с данными, кешируется, выводится;
Но если мы изменим название элемента инфоблока или значение в строковом свойстве элемента, то ничего не меняется, данные берутся из кеша. Только ручной сброс кеша помогает. Но хотелось бы автоматического.
Автокеширование включено, кеширование включено, композит выключен. Почему не срабатывает автоматический сброс кеша при Автокешировании?
Кеширование выборок из БД
В версии 16.5.9 в ORM появилось кеширование выборок из базы данных:
v16.5.9 (beta) 2016-10-20 Разработчикам: в ORM добавлено управляемое кеширование выборок (ключ "cache" в параметрах getList()).
Чтобы закешировать результат getList нужно задать ключ cache. Например, при получении элементов инфоблока:
Параметров ttl задаётся время жизни кеша, а cache_joins задаёт необходимость кеширования при наличии джойнов. Внутри используется управляемое кеширование. Кеш пишется в папку /bitrix/managed_cache/MYSQL/orm_%имя_таблицы_сущности_orm%/ с ключом md5(%sql-запрос%) .
В настройках CMS (/bitrix/.settings.php) можно задать глобальный диапазон ttl для отдельных таблиц с помощью настройки cache_flags:
Для того, чтобы очистить кеш выборок сущности, нужно вызвать метод cleanCache. Например, для элементов инфоблока:
Почистить кеш Bitrix. Как удалить весь кеш в Битриксе?
Битрикс — махина. Для ускорения всё чётко кеширует. Но при разработке, кеш нужно прочистить, чтобы не было недоработанных хвостов. Особенно, когда исправляете уже на рабочем сервере.
Битрикс использует файловый кеш и чтобы его почистить, нужно удалить все файлы в папке /bitrix/cache/
В панеле администратора это можно сделать — "Автокеширование"-> "очистка файлов кеша", но на сложных проектах, это может занять много времени.
Можно выполнить команды php
Они промаркируют файлы кеша битрикса на удаление. В конце названий всех файлов кеша появится приписка из точки, тильды и длинного числа типа: ".
7894561". Получается, что после такой маркировки пути к файлам кеша изменятся, следовательно весь старый кеш сайта не будет восприниматься.
Помочь системе теперь быстро удалить все промаркированные файлы можно командой
rm — удалить файл/папку
-r — Рекурсивное удаление каталогов. Если не поставить этот ключ, то произойдёт удаление только файлов в корневой папке /cache/, но не файлов, вложенных в папки (к примеру, /cache/s1/).
-f — означает "не спрашивать подтверждение на удаление". Если не поставить этот ключ, то система будет спрашивать действительно ли мы хотим удалить каждый файл.
almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.
Удаление (сброс) кэша сайта в 1C-Bitrix через FTP или файловый менеджер
Если по какой-либо из причин у вас нет доступа к панели управления сайтом, очистить кэш можно вручную, удалив все содержимое папок /bitrix/cache/ и /bitrix/managed_cache/ удобным для вас способом.
При использовании технологии «Композитный сайт», дополнительно нужно удалить папку domain и файл .enabled по пути /bitrix/html_pages/, где «domain» – домен вашего сайта, при этом после завершения работа этой функции прекратиться и ее (по необходимости) нужно включить вновь. Сам способ не рекомендуем, используйте его только в случае недоступности панели управления.
Дополнительно: кэш из папки /bitrix/cache/ можно удалить с помощью следующей функции, выполнив ее по пути «Настройки» – «Инструменты» – «Командная PHP-строка»:
В ней «true» – показатель того, что нужно удалить все файлы (в случае с false будут удалены только устаревшие), а «/»– путь к удаляемым файлам кэша относительно /bitrix/cache/.
Если неуправляемый кэш сайта из папки /bitrix/cache/ не удаляется, пропишите в файле dbconn.php, который находит в папке /bitrix/php_interface/ следующие строки:
Таким образом, вы решаете вопрос с правами сервера, которые, в свою очередь, мешают корректному удалению файлов кэша.
Читайте также: