Рейтинг:0

Как кэшировать PHP на nginx?

флаг in
Sam

Скажите, что я создаю новостной сайт на пример.com, и теперь у меня есть example.com/latest.php, это скрипт, который выполняет много запросов, и я хочу повысить производительность. Как мне настроить php/nginx, чтобы он генерировал кеш, и когда посетитель приходит, кеш отправлялся, чтобы он/она не ждал слишком долго.
PS: На example.com/donotcache.php я не хочу, чтобы он кэшировался (скрипт подсчета пользователей), как это сделать? Список вопросов:

  1. Какие модули мне нужны?
  2. Какие изменения сделать в конфиге nginx?
  3. Что делать, если мне нужно использовать одноразовый номер CSP (политика безопасности контента) (тогда каждая страница является динамической)?
флаг us
Первое, что вы должны сделать, это проверить структуру и индексы вашей базы данных. Если вы хотите использовать одноразовый номер CSP, вы не можете кэшировать в nginx. Конфигурация кэширования nginx зависит от вашей текущей конфигурации, поэтому, пожалуйста, добавьте к вопросу вывод `nginx -T`, чтобы можно было добавить соответствующие директивы.
mforsetti avatar
флаг tz
вы хотели бы сначала собрать информацию о вашей загрузке, прежде чем что-либо делать. сначала отследите и профилируйте свое веб-приложение, прежде чем решать, какую оптимизацию делать.
Рейтинг:-1
флаг in

Вы должны иметь возможность использовать код OPcache внутри самого php, чтобы убедиться, что вы не компилируете php при каждом посещении вашего сайта посетителем. Имейте в виду, что это потребует выделения системной памяти для хранения кэшированного скомпилированного файла php. Это может быть намного быстрее, если ваша частота попаданий достаточно высока. Если у вас есть память для этого, вы даже можете настроить кеш запросов MySQL для хранения результатов запросов. Однако существует компромисс между тем, сколько памяти требуется и сколько памяти у вас есть. Обмен убьет вашу производительность. Низкая производительность приведет к снижению посещаемости вашего сайта ... это деликатный баланс.

Если вы где-то используете пакеты php из какого-то репозитория, ищите модуль OPcache в php. Если вы компилируете его, убедитесь, что вы включили OPcache во время компиляции. Вам не нужно ничего сообщать nginx об OPcache. Установите размер кеша в php.ini системного уровня, и вы готовы к рок-н-роллу!

флаг cn
Ни один из них на самом деле не отвечает на вопрос, но давайте коснемся того, что вы сказали. PHP OPCache не нуждается в памяти как таковой, так как в последних версиях он представляет файловый OPcache. Кэш запросов MySQL, если вы имеете в виду тот, что находится на самом сервере MySQL, устарел в не очень последних версиях MySQL, достаточно сказать, что в 8.0 он вообще недоступен. Наконец, я думаю, что OP означает спросить о полном кеше страниц. и это делается в NGINX (кэш fastcgi) *или* Varnish и т. д.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.