Протягом останніх кількох місяців я зумів підвищити laravelshift.com з 6% до 98% кешування. Коли я тільки починав, пам’ятаю, як обирав запит кешування додатка Laravel з Cloudflare. Перші два результати — пост Енді Хінкля та пакет.
Обидва використовували проміжне програмне забезпечення для налаштування заголовків кешу для Cloudflare. Але у них були недоліки. Хоча вони встановлюють відповідні заголовки, Cloudflare ігнорує рішення Енді, адже відповідь також включала заголовки Set-Cookie (стандартна поведінка Laravel). Пакет повністю видаляв заголовок Set-Cookie, що є доволі небезпечним, оскільки могла кешуватися версія сторінки з даними користувача.
Я хотів щось більш зрозуміле та чітке, щоб уникнути будь-яких непередбачуваних ситуацій при кешуванні сторінок. Врешті-решт, я вирішив зареєструвати нову групу проміжного програмного забезпечення static.
// bootstrap/app.php
->withRouting(
web: __DIR__ . '/../routes/web.php',
api: __DIR__ . '/../routes/api.php',
commands: __DIR__ . '/../routes/console.php',
channels: __DIR__ . '/../routes/channels.php',
then: function () {
Route::middleware('static')
->group(base_path('routes/static.php'));
}
)
Ця група фактично є копією групи api. Вона виключає всі станні проміжні програмні модулі, такі як запуск сесії чи шифрування cookie. Вона лише встановлює заголовки кешу та дозволяє прив’язку параметрів маршруту.
$middleware->group('static', [
\App\Http\Middleware\SetCacheControlHeader::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
]);
Виключивши всі станні модулі, я запобігаю випадковому використанню станних даних на кешованих сторінках, що можуть бути або з сесії, або з cookie. Група проміжного програмного забезпечення також дозволяє мені чітко визначати кешовані сторінки в окремому файлі маршрутів. Тепер я реєструю всі статичні сторінки у routes/static.php, що спрощує перелік кешованих сторінок.
Наприклад, за допомогою:
php artisan route:list --middleware=static
Використання окремої групи проміжного програмного забезпечення — це простий спосіб кешування сторінок з Cloudflare (або будь-яким іншим кешем). Це допомагає уникнути звичних побічних ефектів і чітко розділяє ваші кешовані сторінки. Якщо ви зацікавлені в покращенні продуктивності сайту за допомогою кешування з Cloudflare, приєднуйтесь до списку раннього доступу мого майбутнього курсу Fast Laravel