
Страница плагина Quicksilver в маркетплейсе OctoberCMS.
О плагине:
Молниеносно-быстрый статичный кэш для вашего сайта, который сохранят страницы как статичные .html
файлы. Плагин будет полезен тем, кто хочет достичь максимальной скорости TTFB от своего сайта, снизить нагрузку на сервер, и повысить привлекательность своего сайта для поисковых роботов.
Данный плагин, кэширует все URL, которые были запрошены через GET с 200 кодом ответа от сервера. Плагин не конфликтует со стандартным AJAX фреймворком OctoberCMS, не конфликтует с URL которые содержат в себе параметры в виде ?q=123 и т.д.
Заметки
Плагин в стадии бета тестирования.
На данный момент, плагин тестируется на двух крупных активных сайтах, которые активно рекламируются и продвигаются, мы постоянно тестируем его состояние, и мгновенно исправляем ошибки. Создание этой страницы на OctoClub говорит о том что плагин в скором времени выйдет из стадии бета тестирования, так как лично я доволен его результатом и стабильностью на активных проектах.
Багрепорты и PR принимаются только в официальном репозитории плагина по ссылке: https://github.com/Biz-mark/Quicksilver
Обсуждения или предложения новых идей принимаются как в официальном репозитории так и на этой странице.
Установка
Пользуйтесь стандартным средством установки плагинов OctoberCMS.
Перейдите в Настройки -> Обновление плагинов, введите в поиске Quicksilver и установите его нажав на иконку.
Настройка
Откройте .htaccess
в корне вашего проекта и добавьте следующие директивы:
Перед секцией Standard routes
##
## Serve Cached Page If Available
##
RewriteCond %{QUERY_STRING} ^(.)
RewriteRule !^index.php index.php [L,NC]
RewriteCond %{REQUEST_URI} ^/?$
RewriteCond %{DOCUMENT_ROOT}/storage/page-cache/pc__index__pc.html -f
RewriteRule .? /storage/page-cache/pc__index__pc.html [L]
RewriteCond %{DOCUMENT_ROOT}/storage/page-cache%{REQUEST_URI}.html -f
RewriteRule . /storage/page-cache%{REQUEST_URI}.html [L]
RewriteCond %{HTTP:X-Requested-With} XMLHttpRequest
RewriteRule !^index.php index.php [L,NC]
Закоментируйте следующую строку в секции White listed folders.
RewriteRule !^index.php index.php [L,NC]
Убедитесь что у CMS есть доступ на чтение/запись/удаление папки /storage/page-cache
Игнорирование кэша для GIT
Не забудьте добавить в свой .gitignore
следующее условие:
/storage/page-cache
Очистка кэша
Так как кэш сохраняется в виде статичных файлов в файловую систему, при любом изменении исходных данных, вам необходимо чистить этот кэш чтобы изменения были записаны в кэш заново. Для сброса кэша вы можете воспользоваться Виджетом для Дашборда который добавляется нажатием на кнопку "добавить виджет", или можете выполнить artisan команду в консоли вашего сервера:
php artisan page-cache:clear
Как дополнительно, можете написать небольшой скрипт для деплоя, который будет чистить кэш страниц при каждом деплое.
Опционально: вы можете удалить кэш определенной страницы, просто добавив к предыдущей команде в консоли ссылку.
php artisan page-cache:clear {slug}
Кастомные правила для кэширования
По-умолчанию, кэшируются все страницы запрошенные через GET и с кодом ответом сервера 200. Если вы хотите изменить эту логику, вы можете создать middleware, который будет расширять класс Кэша, и переназначить функцию shouldCache
, которая должная возвращать условия для не кэширования страницы.
Example:
<?php namespace Acme\Plugin\Middleware;
use Request;
use Response;
use BizMark\Quicksilver\Classes\Middleware\CacheResponse as BaseCacheResponse;
class CacheResponse extends BaseCacheResponse
{
protected function shouldCache(Request $request, Response $response)
{
// В этом примере мы не кэшируем только страницы,
// в ссылке которых содержатся параметры
if ($request->getQueryString()) {
return false;
}
return parent::shouldCache($request, $response);
}
}
Скопируйте и затем закомментируйте функцию boot
в Plugin.php
плагина Quicksilver
и в своем плагине вставьте и замените класс CacheResponse
на свой в pushMiddleware()
методе.
Не забудьте заблокировать любые обновления плагина в менеджере управления плагинами, иначе любое обновление способно затереть ваши изменения.
© 2019, Biz-Mark под лицензией MIT license.