Пример использования кеширования в Yii2
Спонтанный вебинар о применении кеширования данных, фрагментов и страниц в Yii2 на примере каталога с прошлого скринкаста. Рассмотрели несколько вариантов и ответили на интересные вопросы зрителей:
Приглашаю на следующие видеоуроки. Анонс и ссылку на эфир, как обычно, пришлю в отдельной рассылке по вебинарам:
И задавайте вопросы в комментариях. Спасибо заранее!
C renderDynamic это, вроде, не баг.
А что это, если оно не работает?
Ответил в https://github.com/yiisoft/yii2/issues/11689
Спасибо...
за проделанную работу..
жаль что всю инфу что ты даешь сразу не получается усвоить..)))
Очень круто, мне до такого гениального кода еще далеко. Спасибо.
А можно что-нибудь приземленное изучать, типа вывода иерархического меню или использования kartik yii2-grid c экспортом в эксель) Это конечно очень круто кеширование, когда в основном у тебя посещаемость максимум 20 человек в день)
Здесь мы иерархическое меню для категорий и сделали. А с kartik - устанавливаем и делаем по инструкции.
Еще из насущных проблем: как зафигачить jabber чат на сайт, с обновлением естественно в реальном времени. Ну и про панель с правой стороны на yii2 заодно расскажите)
Для jabber интегрируем что-нибудь вроде этого. А панель мы и сделали с виджетами категорий и меток в каталоге.
Доброго времени суток, Дмитрий! Научите, пожалуйста делать свои шаблоны для генеоации CRUD правильно. Чем больше хороших и коротких уроков типа рецептов по Yii у вас будет, тем больше будет посещаемость. Длинные видеоуроки очень тяжело смотреть. А что-то по-быстрому найти- вообще нереально у вас в видео).
Я конечно не достоин кого-то учить. Но это так, мое небольшое замечание и просьба)
Про CRUD уже есть.
Честно говоря, вообще не знаком с Yii2, однако все чаще встречаю упоминаю о нем. Видимо идет динамика роста популярности, надо проверить статистическую информацию.
Вообще интересная, конечно, тема. В свободное время надо заняться изучением. Думаю, все получится, ведь познания в программирования на языках вроде html, php, c++ и некоторых других имеются.
Привет. Мне не совсем понятно о каком гигабайте памяти идет речь начиная с 2:31:40 (http cache) и почему нужно быть осторожным с user id . Там ведь речь об http cache. То есть, в зависимости от нашего заголовка (etag или last modified) все кэшируется в браузере у клиента. Не понятно причем тут гигабайт памяти. Пожалуйста проясните эту ситуацию если я что-то не так понял.
Нужно быть осторожным с user->id при обычном кеше.
И еще один вопрос про кэширование статики на отметке 2:57:30. Мне не совсем понятно зачем нужно специально что-то делать для инвалидирования статики (например использовать appendTimestamp в assetManager) . По-умолчанию, веб-сервер (nginx например) отдает статику с нормальными заголовками, то есть берет дату и время последнего изменения из статичного файла (js, css, jpg итд) и передает их в заголовок last modified. Таким образом, если мы изменяем статичный файл на сервере, то он и придет клиенту в браузер со статусом 200 и сразу закэшируется в браузере. В след. раз при обновлении страницы этот файл уже будет браться из кэша браузера (статус 304). Там правда есть нюанс с опцией nginx sendfile, если sendfile отключен то все работает как и должно без всяких добавлений таких параметров как ?v=... В итоге, мне не ясно зачем нужно что-то делать специально для кэширования статики если это в вебсервере все уже настроено и логично (на мой взгляд) работает.
Если всё работает и браузер запрашивает с If-Modified-Since, то не нужно.
Вопрос немного не по кэшированию, просто в своём видео вы затронули вопрос activateParents
Как раз в своей системе никак не могу победить это баг. Т.е. если перехожу по url: site/department - то меню подсвечивается, как активное, а если site/department/1 то уже не подсвечивается
Работает через модули, как вы поняли
Ну так у Вас вложенных подпунктов нет, чтобы срабатывало activateParents. Проставляйте активность вручную:
Дмитрий, спасибо большое.
Добрый день, не получается настроить pagecache, есть экшн
пишу
Так вот он кэширует только первую посещенную страницу с этого экшна, при переходе на другие показывает только эту первую закешированную.
Что нужно прописать чтобы остальные страницы с этого экшна тоже каэшировались и показывали свою страницу.
Дмитрий, спасибо за помощь, получилось:-)
Подскажите, можно ли использовать pageCache в проекте интернет магазина? В частности где есть корзина, просмотренные товары и тд и тп. У меня при включении pageCache, кэшируется вся страница целиком и счетчики не обновляются в итоге(
Только если виджеты со счётчиками не рендерить сразу в коде самой страницы, а подгружать по Ajax.
А так для динамических сайтов PageCache не очень полезен. Удобнее кешировать фрагментами.
Фрагментарное настроено, но результат скорости загрузки главной хотелось бы видеть еще меньше.
С Ajax спасибо, хорошая подсказка, буду смотреть в эту сторону.
Дмитрий, спасибо большое за видео. За три часа с небольшим очень доступно объяснили. Для себя к вашему видео всегда пишу справки, типа:
Помогает быстро вспомнить о нужной информации в работе.
Еще раз огромное спасибо!