Http кэшироване

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
ak1234567890
Сообщения: 3
Зарегистрирован: 2022.11.10, 15:54

Http кэшироване

Сообщение ak1234567890 »

Здравствуйте! Возник вопрос по Http кэшированию.
Пробовал для этого следующие способы: Last-Modified и ETag Header.
Страницу с GridView кэширует и отображает быстро. Проблема возникает тогда, когда происходит обновление данных.
Проблема – это отображение старых данных вместо новых.
Заметил, что только при обновлении по кнопке в строке браузера данные обновляются на новые – а если открывать страницу по ссылкам на сайте – страница отображается из кэша со старой информацией (проверял в Safari и Chrome)

В качестве примера использовал документацию
https://www.yiiframework.com/doc/guide/ ... ching-http

Пример с Last-Modified делал так:

Код: Выделить всё

   [
       'class' => 'yii\filters\HttpCache',
       'only' => ['index'],
       'lastModified' => function ($action, $params) {
           $q = new \yii\db\Query();
           return $q->from('word')->max('updated_at');
       },
   ],
   
Пример с ETag Header делал так:

Код: Выделить всё


   [
       'class' => 'yii\filters\HttpCache',
       'only' => ['index'],
       'etagSeed' => function ($action, $params) {
           $q = Word::find()
               ->asArray()
               ->all();

           return serialize([$q]);
       },
   ],
   
Скрин (так же добавляю во вложения)
https://ibb.co/C7Vjyby

Запись с экрана как работает кэширование:
Last-Modified
https://youtu.be/FIqRTyT-uaI

ETag Header
https://youtu.be/5GQdHeIqM8k

Вопрос:
1. Подскажите, пожалуйста, что я неправильно сделал или как правильно использовать http кэширование?
2. Интересует решение когда есть много записей, например 100 тыс. или несколько миллионов. Как правильно в таких случаях кэшировать GridView чтоб сохранить скорость работы сайта и при этом чтобы отображало обновленные данные?

Спасибо!
Ответить