Я хочу реализовать двухпроходную систему кеширования:
При первом проходе генерируется файл PHP со всеми общими вещами (например, новостями), жестко закодированными. Затем в базе данных есть таблица кеша, чтобы связать их со страницами (например, «index.php page = 1 style = default»), база данных также хранит поле обновления, которое, если значение false, вызывает повторный запуск первого прохода при следующем запуске страницы. рассматривается.
Второй проход заполняет второстепенные детали, такие как, как давно что-то (?), И изменчивые элементы, такие как «Вы вошли как ...».
Однако я не уверен в эффективной реализации, которая поддерживает как кэшированные, так и не кэшированные (например, поисковые) страницы, без большого количества кода и нескольких запросов.
Прямо сейчас при каждой загрузке страницы запускается PHP-скрипт, восстанавливающий страницу. Для страниц, подобных поиску, это нормально, поскольку большинство запросов отличаются, но для других страниц, таких как индекс, это практически одинаково для каждого попадания, но генерирует большое количество запросов и довольно длинный сценарий.
Проблема в том, что некоторые части страницы изменяются для каждого пользователя, например, в разделе «Вы вошли в систему как ...», поэтому простое сохранение созданных страниц все равно приведет к 10000 из почти идентичные страницы.
Основная проблема связана с уменьшением нагрузки на сервер, так как я работаю на виртуальном хостинге и на данный момент не могу позволить себе обновление, но сайт использует значительную часть ЦП серверов +, что обеспечивает достаточную нагрузку на сервере MySQL.
Таким образом, в целом минимизация того, сколько нужно сделать для каждого запроса страницы, и не регенерировать такие вещи, как новости в индексе, все время кажется хорошим началом по сравнению с поиском, который является гораздо менее статичной страницей.
Я на самом деле считал жестким кодирование новостных элементов в виде обычного HTML, но тогда это означает, что они должны храниться в нескольких местах (поскольку они могут использоваться для поиска, а комментарии находятся на странице, посвященной этому новостному элементу (например, news.php). и т. д.).