laimas, тщательно протестировал.
Вот пример query для создания хэша:
выполняется при update, insert, delete и выставляет флаг для следующего
Цитата:
|
$SQL = 'CHECKSUM TABLE `'. self::$sql_hash_table .'`;';
|
выполняется, если предыдущее выставило флаг
Цитата:
|
$SQL = 'INSERT INTO `revolver__hash` (`field_id`, `field_'. explode('__', self::$sql_hash_table)[1] .'`) VALUES (\'1\', \''. self::$sql_actual_hash .'\')
ON DUPLICATE KEY UPDATE `field_id`=\'1\', `field_'. explode('__', self::$sql_hash_table)[1] .'`=\''. self::$sql_actual_hash .'\';';
|
дальше таблица пишется в файл полностью и к ней лепится метка self::$sql_actual_hash.
Запускается процесс и первым делом выставляется define('cache_hashe', [hashes] );
А дальше сверяем со статикой и если что перевыгружаем данные, тут же рендерим и обновляем статический кэш.
Каждая нужная таблица - отдельный файл.
Таким образом не нужны никакие метки протухания и планировщики.
Весь класс пока выложить не могу - еще нужна обкатка.
Мемкэш мне не нужен - это зависимости модуля и как правило 'залипание'.
Кэш есть и у самой БД внутри - это я знаю.
Кэш шаблонизатора - это тоже фигня фактически, хотя смерти в свое время был шикарен.
Cron - не гарантирует моментальное обновление и подразумевает геморройный batch.
Кэш JSON лучше мне кажется(те же таблицы, но только в JS формате, который транслируется легко и непринужденно в тот же массив без каких либо костылей).
p.s.: уложился в 1 запрос для создания checksumm и в 2 запроса при обновлении(checksumm+action), а также для сайтов со статическим содержимым типа библиотек без комментирования и пользователей всего 1 запрос на отрисовку.