Задать вопрос

Как правильно использовать кэш в Yii?

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

Делаю простенький сайт-блог, с одной таблицей для статей, без графы "update_time".
Как я себе представляю механику - после создания статьи, она (запрос и ее вид) заносится в кэш на долгое время. После редактирования или удаления - активируется действие, которое сбрасывает кэш для этой статьи. При следующем запросе она снова заносится в кэш до лучших времен.

Вопросы такие:
  1. С моим вариантом кэширования не будет проблем?
  2. Как кэшировать view? В интернете не нашел информации, а тут я ничего не понял =(
  3. Как со всем остальным использовать CHttpCacheFilter? Нужен ли он?
  4. Такой вариант использования ни чем не грозит?


Вроде все. Тема для меня нова, поэтому буду рад всему)

#Дополнение
Допустим, мне не нужен кэш сейчас, т.к. 20К в день не ожидается. Но вопрос остается в силе - либо у этого подскочит посещаемость, либо я начну разрабатывать загруженный сайт. По крайней мере не стоит обходить эту тему стороной, когда намерен изучить движок.
Также, я думаю, что разумная настройка кэширования пойдет на пользу даже сайту с низкой посещаемостью. Или я не прав?
  • Вопрос задан
  • 700 просмотров
Подписаться 5 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 3
FanatPHP
@FanatPHP
Чебуратор тега РНР
Кэш использовать очень просто.

Когда ты уверен, что работа с данными оптимизирована на 100%, и все равно скорость неудовлетворительная - тогда надо начинать использовать кэш.

Из этого следует, в частности, что пока посещаемость сайта не достихла хотя бы 20К посетителей день, никакой кэш тебе не нужен

Или я не прав?

Неправ.
Выборки по первичному ключу вообще никогда кэшировать не надо.
Твое заблуждение состоит в том, что ты полагаешь БД каким-то неповоротливым монстром, который без кэширования шагу не сделает. Это, мягко говоря, не так. Большую часть запросов вообще кэшировать не нужно. А уж выборка одной строки по первичному ключу всегда будет быстрой, независимо от того, насколько загружен сайт.
Ответ написан
kumaxim
@kumaxim
Web-программист
Я с кэшированием в Yii не работал, но с 1,5 года назад реализовывал его для CodeIgniter

Суть кэша в следующем:
1)У тебя есть "тяжелый" фрагмент кода, обычно это выборка из БД, но может быть и сортировка списка из 1 млн элементов, и запрос информации из стороннего сервиса... Много чего может быть, но главный критерий - этот фрагмент кода выполняется долго
2)Ты один раз выполняешь свой "тяжелый" код и запоминаешь его результат в кэш
3)Далее при запросе этой же информации ты проверяешь, есть ли для нее результаты в кэше и не истекло ли его время
4)Если оба условия ОК - ты достаешь информацию из кэша, а не выполняешь снова свой "тяжелый" код

Обычно, кэш используют в двух случаях:
1)Снизить нагрузку на какой-либо сервис
2)Увеличить скорость загрузки сайта(приложения)

Вообще операция "достать из кэша" - по сути чтение txt-файла, если сильно не вдаваться в детали реализации.
Ответ написан
Комментировать
@Nc_Soft
Если ты докатился до стадии кеширования вьюшек, то лучше веб сервером кешировать страницы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы