Представим на мгновение, что вы являетесь создателем популярной CMS, написанной на PHP.Он используется многими людьми для многих сайтов.Теперь давайте немного поговорим о методах кеширования.В классе обслуживания есть одна функция (getItemByHandle
) для получения определенного элемента из определенной таблицы из базы данных.
Что касается общей производительности, вы бы предпочли
- написать запрос к базе данных для извлечения этого конкретного элемента и кэшировать его для каждого дескриптора,
- или, вы бы предпочли извлечь все элементы, кэшировать их и затем отфильтровать нужный элемент с помощью цикла foreach в PHP?
Оба метода будут кэшировать его только для текущего запроса.Вывод базы данных хранится только в переменной PHP.Так что никаких дальнейших методов кэширования, таких как Key-Value-Store или около того.
Первый метод будет кэшировать только выбранные элементы.Каждый вызов getItemByHandle(...)
с другим дескриптором вызовет новое попадание в базу данных.
Однако второй метод будет попадать в базу данных только один раз (за запрос), но это также означает, что из базы данных будет больше трафика иPHP имеет большую нагрузку.Поэтому, если в таблице будут тысячи записей, она будет выбирать все для каждого запроса, но не будет попадать в базу данных при последующих getItemByHandle(...)
вызовах в рамках того же запроса.
Я спрашиваю, потому что, возможно, естьтакже другие аспекты для рассмотрения, которые здесь не описаны.