Кэширование PHP – быстрее ли сохранять в базе данных или создавать файл?

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

Это хорошо работает, но накладывает ли меньше нагрузки на сервер для сохранения кэшированных страниц в качестве файлов вместо сохранения в базу данных? Я мог бы использовать соглашение об именах в файлах для обработки времени истечения срока действия.

Если быстрее и меньше нагрузка на сервер для чтения / записи из файла вместо базы данных, я переключусь на это. Кто-нибудь знает, что быстрее / лучше?

Если быстрее и меньше нагрузка на сервер для чтения / записи из файла вместо базы данных, я переключусь на это. Кто-нибудь знает, что быстрее / лучше?

Самый быстрый способ – использовать статические файлы, потому что вы можете выдать кеш, даже не запустив PHP (используя RewriteRules). Однако он не будет масштабироваться должным образом, если у вас есть несколько передних концов.

Следующее лучшее – сохранить его в памяти, например, с помощью Memcache .

Наименее предпочтительным является использование SQL. Если вы придерживаетесь этого, по крайней мере, сделайте свой жесткий диск в пользу, используя механизм хранения памяти или его эквивалент (например, таблица с разметкой, которая находится в табличном пространстве, хранящемся на RAM-диске, если вы используете PostgreSQL).

Оба варианта используют файловую систему, поскольку (при условии, что вы используете MySQL без таблиц MEMORY / HEAP) записи базы данных по-прежнему хранятся в файлах.

Если у вас есть активное соединение с базой данных во время запроса кэшированных данных, я буду придерживаться базы данных.

Вот что-то интересное, что я никогда не пробовал, но слышал хорошие вещи. Вы можете использовать API Google Spreadsheet для работы в качестве базы данных через HTTP-запросы. Звучит (по крайней мере, теоретически), как будто это идеальное решение этой проблемы. Не ответ на ваш вопрос – еще один вариант.

На ваш вопрос нет ни одного реального ответа, это действительно зависит от количества запросов и кеша, которые использует база данных, в отличие от времени, которое требуется для анализа файла. Могут иметь место и другие факторы.

Однако вы можете использовать расширения PHP, такие как Memcached, как предложил Денис. Это работает еще лучше в сочетании с базой данных, используя фреймворк вроде Doctrine . Это упрощает управление вашими данными с помощью базы данных. И обслуживать фактические данные в производстве путем кеширования результатов запроса.