2017 © Pedro Peláez
 

library boo

Серверное кэширование с ручным избирательным обновлением

image

akiyatkin/boo

Серверное кэширование с ручным избирательным обновлением

  • Saturday, May 12, 2018
  • by akiyatkin
  • Repository
  • 1 Watchers
  • 0 Stars
  • 274 Installations
  • PHP
  • 8 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 12 Versions
  • 7 % Grown

The README.md

Boo-кэш - управляемый кэш сайта

Кэширования результата при работе с удалёнными хранилищами, обращение, к которым требует значительного времени, такими как Google Drive., (*1)

Рекомендуется использовать на небольших сайтах (10 000 кэшей), когда администратор вносит изменения на удалённом хранилище и сбросив нужный кэш применяет изменения на сайте. Целесообразно применять в тех случаях, когда нет возможности настроить обратную связь для автоматического обновлениея кэша. Ручное и избирательное управление кэшем является ключевой особенностью Boo-кэша., (*2)

Поддерживаются вложенные кэши и повторное исплользование, когда в дереве зависимостей у экземпляра кэша несколько родителей. Во всех случае кэшируемая функция выполняется один раз. При обновлении зависимых кэшей обновляются и все родительские кэши., (*3)

Установка через composer

{
    "require":{
        "akiyatkin/boo":"~1"
    }
}
  1. Должен быть .htaccess с настроенной переадресацией для адресов начинающихся с символов !~- согласно правилам infrajs/router, чтобы в проекте работал адрес /-boo/. Совместим с любыми другими роутерами или фреймворками.
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/[-~\!]
RewriteRule ^(.*)$ vendor/infrajs/router/index.php [L,QSA]
  1. Необходимо настроить права для упраления кэшем. Для этого создать в корне проекта конфигурационный файл .infra.json. Для сервера 127.0.0.1 разрешение есть автоматически, но на других серверах нужно будет указать ip адрес в секции access.test или true для общего доступа к интерфейсу управления кэшем. Доступом управляет расширение infrajs/access.

Файл .infra.json, (*4)

{
    "access":{
        "test":true
    }
}
  1. В скрипте, который работает с расширением Boo рабочая дирректория должна вести на корень проекта. Если скрипт лежит во вложенной папке должна быть команда chdir('../'); согласно требованиям infrajs/path, (*5)

  2. Для того чтобы работал параметр ?-boo в адресной строке скрипта требуется выполнение Router::init(), или обращение по адресу с символом -, тогда роутер подключается автоматически и рабочую дирректрию также не нужно менять она всегда будет от корня, вне зависимости от расположения файла скрипта., (*6)

Использование

use akiyatkin\boo\Cache;

$args = array($one, $two); //простые, необязательные параметры идентифицирующие кэш
$data = Cache::exec('Group title', function ($one, $two) {
    $data = sleep(5); //Что-то долгое
    //$one и $two чаще всего какие-то идентификаторы.
    //Можно указать более понятный title для кэша текущей обработки
    Cache::setTitle($title);
    return $data; //нерекурсивные кэшируемые данные
}, $args);

Функция сохраняет кэши и позволяет выборочно обновлять их по адресу /-boo/ (С правами тестировщика infrajs/access и настроенным роутером infrajs/router), (*7)

Для работы GET-параметра -boo скрипт должен вызываться или с символа - или содержать инициализацию роутера., (*8)

Записки разработчика

Cache сохраняет кэш на жёстком диске в папке !boo/. Описание кэш-элементов для которых предусмотрена админка (BooCache) хранится в !boo/.tree.json., (*9)

item.result, item.conds, item.childs восстанавливаются и их без выполнения нельзя получить из исходных данных кэш-функции. Если есть conds, то childs не нужен., (*10)

Лучше аргументы conds получитать в проверяющей функции, чем сохранять в condsarg. condsarg закэишрует значения аргументов и может сложиться, что будут использоваться старые значения, например если аргументы формируются из конфига. Запомнились в кэше, а потом конфиг был изменнён и обновления сайта произойдёт только после -update=true, так как аргумент к проверяющей фукции будет неизменным., (*11)

/-update/ - Выполняет установку без удаления кэша, (*12)

?-update=true - Удаляет весь кэш, (*13)

test = true - Проверки запускаются, кэш перегенерируется для обычного пользователя, (*14)

debug = true, ?-access = true, admin = true - Запускают проверки, некоторые кэши не сохраняются и не обновляются. Например несжатый html и css в кэш не попадают., (*15)

?-boo = true|root|id - Работает только с test=true. Проверки запускаются, некоторые проверки true. - элементы перегенерируются для пользователя., (*16)

-start/start - Работает только с test=true. Все проверки true - все эелменты перегенерируются., (*17)

При обращение к базе данных срабатывает заголовок nostore, который отменяет сохранение кэша и нужно вызвать Nostore::off() если обращение к базе не должно запрещать кэш и написать проверку обновления используемых из базы данных., (*18)

Флаги кэш-элементов - nostore - checked - loaded - start, (*19)

Динамические свойства кэш-элементов - childs - time - timer - result - conds, (*20)

Статические свойства кэш-элементов - id - gid - cls - src - gtitle - title - condfn - condargs - args - hash, (*21)

Контакты

Задать вопрос можно в группе ВКонтакта https://vk.com/infrajs или в issues на github., (*22)

The Versions

12/05 2018

dev-master

9999999-dev https://github.com/akiyatkin/boo

Серверное кэширование с ручным избирательным обновлением

  Sources   Download

GPL3

The Requires

 

12/05 2018

v1.0.10

1.0.10.0 https://github.com/akiyatkin/boo

Серверное кэширование с ручным избирательным обновлением

  Sources   Download

The Requires

 

19/03 2018
18/03 2018
04/03 2018
30/01 2018

v1.0.6

1.0.6.0 https://github.com/akiyatkin/boo

Серверное кэширование с ручным избирательным обновлением

  Sources   Download

The Requires

 

30/01 2018

v1.0.5

1.0.5.0 https://github.com/akiyatkin/boo

Серверное кэширование с ручным избирательным обновлением

  Sources   Download

The Requires

 

29/01 2018

v1.0.4

1.0.4.0 https://github.com/akiyatkin/boo

Серверное кэширование с ручным избирательным обновлением

  Sources   Download

The Requires

 

29/01 2018

v1.0.3

1.0.3.0 https://github.com/akiyatkin/boo

Серверное кэширование с ручным избирательным обновлением

  Sources   Download

The Requires

 

28/01 2018

v1.0.2

1.0.2.0 https://github.com/akiyatkin/boo

Серверное кэширование с ручным избирательным обновлением

  Sources   Download

The Requires

 

27/01 2018

v1.0.1

1.0.1.0 https://github.com/akiyatkin/boo

Серверное кэширование с ручным избирательным обновлением

  Sources   Download

The Requires

 

02/11 2017

v1.0.0

1.0.0.0 https://github.com/akiyatkin/boo

Группы кэша для поэтапного сброса

  Sources   Download

GPL3

The Requires