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