УрокБазовая информация о кэше и о работе с ним в Друпале

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

Кэш - это некий промежуточный буфер, в котором храняться часто запрашиваемые данные, которые могут быть возвращены пользователю с наименьшими затратами системных ресурсов (и заодно с максимальной скоростью). Этот буфер может представлять из себя, например, таблицу(ы) в базе данных. Либо хранить данные в файле. В принципе, любой тип хранения информации подойдёт (главное, чтобы потом эту информацию можно было быстро взять). Напомню, что я веду речь о кэшировании для веб-приложений. Для десктопных приложений смысл кэша фактически тот же, но храниться он явно не в базе данных :) Кому интересно про десктопный кэш - можно зайти сюда. А я продолжу про веб.

Самый простой и наглядный пример использования кэша:

Допустим, к нам на сайт каждые 5 минут заходит новый пользователь. Для каждого из пользователей сайт должен посчитать некую сложную математическую функцию, выполнение которой на сервере занимает 1 минуту (да, пример явно далёк от здравого смысла, но на то он и пример). А потом мы выводим результат работы функции. То есть:

  $result = very_hard_function();
  echo $result;

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

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

Кэш можно почистить несколькими способами:

  • Нажав на кнопочку "Очистить кэш" на странице /admin/settings/performance
  • Установив модуль admin_menu (удобная, кстати, штука) и выбрав в самой левой вкладке Flush all cache (Очистить весь кэш)
  • С помощью ссылки "Empty cache" (очистить кэш) блока Devel Block (модуль - Devel)
  • Вбить комманду в Drush: drush cache-clear theme (чистится только кэш темы)
  • Программно, вызвав функцию drupal_rebuild_theme (чистится только кэш темы)

Комментарии

Аватар пользователя Тайный поклонник
Тайный поклонник написал:

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

24.02.2011 12:52
Аватар пользователя Тайный поклонник
Тайный поклонник написал:

Долгое введение, а потом сразу конец.

11.03.2011 07:11
Аватар пользователя Посторонний
Посторонний написал:

Согласен с выше написанным - заголовок не отражает суть статьи.

30.03.2011 02:26
Аватар пользователя Тайный поклонник
Тайный поклонник написал:

-1

13.06.2011 16:22
Аватар пользователя Тайный поклонник
Тайный поклонник написал:

-1

10.07.2011 07:07
Аватар пользователя kiv48
kiv48 написал:

Спасибо за статью.Недавно начал изучать Друпал,поэтому информация очень даже нужная.Насколько я понял для наиболее полной очистки кэша будет достаточно модуля admin_menu ?

31.07.2011 23:08
Аватар пользователя Spleshka
Spleshka написал:

Да, вполне достаточно

01.08.2011 20:21
Аватар пользователя Kot
Kot написал:

да это пустая статья, хоть бы по делу написал че, или тут детский сад?

23.12.2011 21:01
Аватар пользователя Spleshka
Spleshka написал:

Трепать языком каждый умеет. Не нравится - сделай лучше.

23.12.2011 22:45
Аватар пользователя ice
ice написал:

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

23.12.2011 21:58
Аватар пользователя Мария
Мария написал:

А я благодарна за статью - все по полочкам разложилось.
У меня такой вопрос - кэш можно только в ручную чистить в drupal 7?

09.11.2013 15:08

Комментировать