2014-09-21 3 views
0

Я работаю в небольшом школьном отделе, управляющем кодом его сайта. Большая часть кода написана на php и соединяется с несколькими отдельными серверами баз данных для генерации HTML-страницы. Поскольку базы данных не обновляются очень часто, мне было интересно Есть ли способ создать PHP-страницу HTML и сохранить эту страницу на стороне сервера? В принципе, все еще есть php, генерирующий страницу, но имеет только скрипт, вызываемый при изменении базы данных, а не для каждого запроса. Таким образом, сгенерированная PHP страница HTML сохраняется на сервере и может обслуживаться для многих клиентов, прежде чем она должна быть восстановлена.Кэширование HTML-страниц на стороне сервера для снижения сетевой нагрузки

Я знаю, что запрос нормально работает так:

запроса> Веб-сервер> PHP вызывается> подключиться к БД сервера> PHP генерировать HTML с БД информации> HTML возвращается клиенту

Я ищу что-то больше, как это:

дб обновленный> веб-сервер генерирует HTML> HTML-страницу, сохраненную для запросов

этак каждый раз, когда есть запрос, он идет, как это вместо:

запрос> сохраненная в кэше html-страница, хранящаяся локально, возвращается клиенту

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

ответ

0

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

  1. РНР скрипты не вызывают большую нагрузку на сервер, и вы не в состоянии решить, что: нет замены или обновления аппаратного обеспечения является вариант, ни в оптимизации PHP кода. Это единственный сценарий, в котором вы можете создавать статический (HTML) контент и подавать его своим пользователям. Я искренне сомневаюсь, что это так, поскольку вы теряете аутентификацию и т. Д.

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

Предполагая, что причиной второго варианта является причиной просить, рассмотреть вопрос о поиске в нескольких кеширования модулей для PHP, как Fast Cache. Но опять же, это зависит от причины поиска в кешировании. Как правило, создание статического контента на основе содержимого базы данных является лишь жизнеспособным решением, если часть генерации занимает слишком много времени, чтобы ждать.

+0

Рассматривая заголовок вашего вопроса: сетевая нагрузка определяется количеством байтов между сервером и клиентом. Никакая оптимизация кода PHP или кэширования не может решить эту конкретную проблему; конечным результатом является тот же HTML. Убедитесь, что сгенерированные страницы (в любом решении) имеют действительный и соответствующий заголовок управления кешем. – Seshoumaro