Download the PHP package webarchitect609/bitrix-cache without Composer
On this page you can find all versions of the php package webarchitect609/bitrix-cache. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download webarchitect609/bitrix-cache
More information about webarchitect609/bitrix-cache
Files in webarchitect609/bitrix-cache
Package bitrix-cache
Short Description Comfortable fluent interface for Bitrix cache. Anti-stampede cache protection.
License BSD-3-Clause
Homepage https://github.com/webarchitect609/bitrix-cache
Rated 5.00 based on 1 reviews
Informations about the package bitrix-cache
Битрикс Кеш
Удобная обёртка для работы с кешем в Битрикс через fluent interface или по PSR-16. Защита от "cache stampede" ("давки в кеше") по PSR-6: Caching Interface
Возможности
Основное назначение этой библиотеки - максимальное ускорение написания кода, требующего использования кеширования. Дополнительное - защита от "давки в кеше"("cache stampede" или "dog piling") для высоконагруженных проектов методами "блокировки"("locking") и "вероятностного преждевременного устаревания"("probabilistic early expiration"), адаптированная из Symfony Cache 5.1.
- запись, чтение, валидация и удаление закешированной информации через fluent interface с поддержкой всех
Битрикс-специфичных параметров:
- baseDir
- path
- тегированный кеш (в том числе теги инфоблоков)
- кеширование результата выполнения замыкания
- поддержка интерфейса
Psr\SimpleCache\CacheInterfaceпо PSR-16: Common Interface for Caching Libraries - адаптер
AntiStampedeCacheAdapterс двойной защитой от "давки в кеше", соответствующий PSR-6: Caching Interface и Symfony Cache Contracts
Под "капотом" только Bitrix\Main\Data\Cache и Bitrix\Main\Data\TaggedCache из
ядра D7.
Установка
-
Установить через composer:
- Добавить подключение автозагрузчика composer в самое начало файла init.php
Помочь проекту
Вы можете использовать эту библиотеку совершенно бесплатно, а можете поблагодарить автора за проделанную работу и поддержать желание делать новые полезные проекты:
Использование
-
Для ленивых и торопливых:
-
Кеширование с использованием замыкания.
-
Сброс кеша по key.
Для очистки кеша из предыдущего примера необохдимо вызвать метод
delete(string $key), предварительно установивpathиbaseDirсоответствующие ранее созданному кешу(по умолчаниюbaseDir === 'cache'). -
Запись тегированного кеша.
Кеш по пути
/myPathбудет снабжён двумя тегами:myTagи тегом инфоблокаiblock_id_1.Тег кеша также можно установить внутри замыкания:
-
Удаление тегированного кеша.
Кеш из предыдущего примера может быть очищен по тегу. Важно, что при очистке по тегу не требуется устанавливать никакие другие параметры.
-
Использование всех возможностей fluent-интерфейса.
В результате запись ведётся не в папку
cache, а в папкуmyBaseDirпо пути/myPathс ключомmyKeyна 60 секунд и только с тегомTheOnlyTag, т.к. все предыдущие теги были сброшены вызовомclearTags() -
Отмена записи кеша в момент исполнения замыкания.
Метод
abort()используется для предотвращения записи кеша вне зависимости от того, что вернёт замыкание. -
Задание TTL в виде интервала
DateInterval.В результате значение будет закешировано на 1 месяц и 15 минут.
-
Задание TTL к заданному времени.
В результате значение будет закешировано до 31 декабря 2020. Но если указанная дата и время уже прошли, будет ошибка. Метод полезен, чтобы, например, задавать время жизни кеша по дате окончания активности.
-
Использование PSR-16.
Все методы по PSR-16 работают только внутри указанных
baseDirиpath. Т.е. вызовclear()не очистит полностью весь кеш Битрикс. -
Защита от "давки в кеше"
Отдельно должен быть собран адаптер, обслуживающий кеш с защитой от "давки".
Затем следует использовать этот адаптер в тех местах кода, где такая защита требуется.
Дополнительная информация описана в документации компонента Symfony Cache и соглашения Cache Contracts.
Известные особенности
Очистка кеша
Метод \WebArch\BitrixCache\Cache::clear() очищает кеш только внутри $baseDir и подкаталога $path. Эти
параметры относятся только к Битрикс и никак не описаны в PSR-16.
Лицензия и информация об авторах
BSD-3-Clause
All versions of bitrix-cache with dependencies
psr/cache Version ^1.0
psr/log Version ^1.1
psr/simple-cache Version ^1.0
symfony/contracts Version ^1.1.8 || ^2.0 || ^3.0
symfony/polyfill-php80 Version ^1.18