Виділіть кеш сторінок Cloudflare за допомогою групи проміжного програмного забезпечення

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 20 листопада, 2025
В останні кілька місяців я підняв кешування сайту до 98%, усунувши типові проблеми, пов'язані з налаштуванням Cloudflare. Чи хочете дізнатися, як створити спеціальну групу middleware для ефективного кешування вашого Laravel-додатку? Читайте далі, щоб відкрити нові можливості оптимізації вашого сайту

Протягом останніх кількох місяців я зумів підвищити 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