php postgresql с использованием кеша - PullRequest
0 голосов
/ 28 апреля 2018
  • У меня есть страница php с большим количеством запросов, и загрузка занимает 2-3 минуты.
  • База данных, к которой обращаются запросы, обновляется один раз в месяц каждого месяца).
  • На странице отображаются различные схемы базы данных в зависимости от выбора пользователя (пользователь выбирает параметры в поле выбора в зависимости от того, какие используются различные схемы базы данных).

  • Таким образом, если база данных обновляется один раз в месяц, это означает, что после того же самого результата для каждого выбора ввода отображаются до следующего месяца.

Есть ли какое-либо решение (кеширование и т. Д.), Чтобы, если кто-либо из клиентов сгенерировал эту страницу, она использовалась в течение оставшихся дней вместо повторного выполнения запросов?

Ответы [ 2 ]

0 голосов
/ 28 апреля 2018

Звучит так, как будто вы можете просто записать вывод в файл и иметь отдельный скрипт командной строки, который генерирует отчеты раз в месяц.

Пример того, как кто-то делает это в php: https://www.sanwebe.com/2013/09/php-cache-dynamic-pages-speed-up-load-times,, хотя я уверен, что есть много других:)

0 голосов
/ 28 апреля 2018

2-3 минуты это слишком долго, это означает, что ваша база данных не оптимизирована. Вы должны сделать правильные индексы для ваших таблиц, должны проанализировать ваши запросы и в соответствии с этим создать индексы для таблиц.

Также вы можете создать временное представление, которое будет содержать данные ваших самых частых запросов. Обновляйте его один раз в месяц или каждое большое обновление ваших данных в БД.

Создание задачи cron, которая будет выполняться один раз в месяц для воссозданного обновленного представления. Затем выполните запросы из этого сгенерированного представления.

Также вы можете подумать о репликации, если есть много запросов select, попробуйте разделить их между несколькими серверами, чтобы уменьшить нагрузку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...