PHP Caching - быстрее ли сохранить в базе данных или создать файл? - PullRequest
9 голосов
/ 19 мая 2011

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

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

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

Ответы [ 4 ]

6 голосов
/ 19 мая 2011

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

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

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

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

2 голосов
/ 19 мая 2011

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

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

0 голосов
/ 29 января 2016

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

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

0 голосов
/ 19 мая 2011

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

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