Обратный прокси-сервер 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 предоставит вам эту функцию.