Разница в производительности кеширования PHP объектов на файл - PullRequest
2 голосов
/ 17 июня 2009

Есть ли разница между кэшированием объектов PHP на диске, а не нет? При кэшировании объекты будут создаваться только один раз для ВСЕХ посетителей сайта, а если нет, то они будут создаваться один раз для каждого посетителя. Есть ли разница в производительности или я бы тратил время на это? Спасибо:)

Ответы [ 6 ]

5 голосов
/ 17 июня 2009

Производительность сводится к последующему использованию , поэтому даже если ваш объект кешируется один раз и используется всеми ... или кешируется один раз на посетителя ... это значение имеет последующее использование. Если ваш кэшированный объект используется 10 000 000 раз в день, вы сэкономите.

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

1 голос
/ 17 июня 2009

Это так: Файл намного быстрее, чем база данных. Память намного быстрее, чем файлы (если не менять место на диске).

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

Помните: преждевременная оптимизация обычно не лучшая вещь.

0 голосов
/ 17 июня 2009

@ Эйден Белл

Errm. Зависит от объекта. Если одним экземпляром можно поделиться, то вы сохраняете хранилище ... но это зависит от того, был ли объект изменен пользователем. Вы будете читать / писать объект, создавая узкое место. Без дополнительной информации вам придется искать теорию здесь. - Эйден Белл 11 минут назад

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

В основном, когда дело доходит до этого, главный вопрос:

Несколько объектов в памяти, на пользователя PER (каждый пользователь имеет свой собственный набор экземпляров объектов)

VS

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

-

Привет, у кого-нибудь еще есть идеи?

0 голосов
/ 17 июня 2009

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

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

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

0 голосов
/ 17 июня 2009

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

Однако: лучшеспособы, чем запись в файл.Вероятно, было бы лучше сохранить объект в памяти с помощью memcached или APC, и не забывайте, что у вас могут быть проблемы с блокировками файла, если на сайт заходит сразу несколько человек.

0 голосов
/ 17 июня 2009

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

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