Профессиональное программирование на PHP

Страница 237 из 591


Определение кэшируемых компонентов данных 245

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

 Кэширование всей отображаемой страницы или компонентов страниц, как в следующих примерах:

 временное хранение вывода сгенерированной страницы, содержимое которой изменяется редко;

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

 Кэширование данных между пользовательскими запросами, как в примерах ниже:

 данные произвольного сеанса (такие как покупательские тележки);

 сведения из профиля пользователя.

 Кэширование вычисляемых данных, как в следующих примерах:

 кэш запросов к базе данных;

 кэширование запросов RPC-данных.

Определение кэшируемых компонентов данных

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

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

 Какие страницы статичны в течение приемлемого периода времени? Этот период времени умышленно назван столь неопределенно — "приемлемый", поскольку он сильно зависит от частоты доступа к странице. Почти для любого сайта подойдет период, равный нескольким дням или часам. Главная страница сайта www.cnn.com обновляется каждые несколько минут (а в кризисных ситуациях ежеминутно). Учитывая трафик этого сайта, данный период времени квалифицируется как "приемлемый".

 Какие данные полностью статичны (например, справочные таблицы)?

 Какие данные статичны в течение приемлемого периода времени? На многих сайтах персональные данные пользователя, вероятнее всего, остаются статичными в течение всего визита.

Ключом к успешному кэшированию является локальность кэша. Локальность кэша (cache locality) представляет собой отношение количества успешных ответов кэша к количеству попыток чтения кэша. Хорошая степень локальности кэша означает, что в кэше можно найти необходимые объекты, а это, в свою очередь, означает сокращение стоимости доступа. Слабая локальность кэша означает, что поиск кэшированного объекта часто не дает результатов, т.е. кэширование приводит не к повышению, а к понижению производительности.




  Hostland.Ru

 «Бесплатный хостинг Hostland.Su» © 2006