Новое в Symfony 4.3: Улучшено логирование HttpCache

Обратный прокси-сервер Symfony, предоставляемый функцией HttpCache, является кешем шлюза, написанным на PHP. Это не полнофункциональный обратный прокси-сервер, такой как Varnish, но он может обеспечить значительное повышение производительности без необходимости устанавливать, настраивать и обслуживать дополнительные приложения или службы. Вот почему некоторые проекты используют его даже в производстве.

В Symfony 4.3 добавили новые параметры конфигурации, чтобы улучшить ведение журнала ответов HttpCache. Во-первых, опция trace_level сообщает Symfony, какая информация о журнале должна быть включена в ответ через HTTP-заголовок X-Symfony-Cache:

// src/CacheKernel.php
namespace App;

use Symfony\Bundle\FrameworkBundle\HttpCache\HttpCache;

class CacheKernel extends HttpCache
{
    protected function getOptions()
    {
        return [
            // ...

            // 'none'  = log nothing
            // 'short' = log only the main request
            // 'full'  = log the main request and all the sub-requests
            // default value = 'full' if debug = true; 'none' otherwise
            'trace_level' => 'short',
        ];
    }
}

Зарегистрированное значение является кратким и готовым к машинной обработке (например, устаревшее/действительное/сохраненное). Если вы используете Apache, добавьте %{X-Symfony-Cache}o в директиву LogFormat, чтобы включить это значение в сгенерированные журналы.

Вариант использования этой функции – включить ее в рабочей среде и использовать инструмент для обработки сгенерированной информации журнала, чтобы найти самые медленные URL-адреса, те, которые требуют дополнительной настройки кэша и т. Д.

Если вы предпочитаете переименовывать HTTPзаголовок X-Symfony-Cache, используйте параметр trace_header:

protected function getOptions()
{
    return [
        // ...
        'trace_level' => 'short',
        'trace_header' => 'X-Cache-Info-Log',
    ];
}

Интересный факт: этот запрос на добавление добавляет первое использование PHP-функции array_key_first() в кодовой базе Symfony. Эта функция была введена в PHP 7.3, но если вы используете более раннюю версию PHP, компонент Polyfill PHP 7.3 предоставит вам эту функцию.