Настройка кэширования экшена и отправка заголовков

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
aquy
Сообщения: 48
Зарегистрирован: 2014.08.21, 09:35

Настройка кэширования экшена и отправка заголовков

Сообщение aquy »

Пытаюсь настроить одновременное кэширование всего экшена и отправку заголовков, делаю это так:

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

public function behaviors()
    {
        return [
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'index' => ['get']
                ],
            ],
            [
                'class' => 'yii\filters\HttpCache',
                'only' => ['index'],
                'lastModified' => function ($action, $params) {
                    $q = new \yii\db\Query();
                    return $q->from('item')->max('updated_at');
                },
            ],
            [
                'class' => 'yii\filters\PageCache',
                'only' => ['index'],
                'duration' => 43200,
                'dependency' => [
                    'class' => 'yii\caching\DbDependency',
                    'sql' => 'SELECT COUNT(*) FROM item',
                ],
            ],
        ];
    }
 
в Итоге получаю что браузеру всегда отдается кэшированная копия, а заголовки к этой копии никак не подключаются и соответсвенно браузер не использует свой кэш страницы. Если же отключить yii\filters\PageCache то с заголовками все становится хорошо и браузер использует свой кеш и пропускает старницу информируя об этом 304 статусом. Возможно ли настроить чтобы работали и заголовки и кэширование все страницы?

PS при кэшировании всего экшена верно ли я понимаю, что должен выполняться только один запрос, который указан в секции dependency а остальные запросы, используемые в экшене должны игнорироваться и соответсвенно в дебагере должно показано быть 1 запрос? Ато у меня в дебагере все запросы + проверочный
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Настройка кэширования экшена и отправка заголовков

Сообщение yiijeka »

Если все запросы + проверочный, значит проверочный не сработал. Должен быть один. Может у вас и дебаг панелька снизу кешируется, со всей страницей и вы не тот лог смотрите :)

По-поводу заголовков и кэша затрудняюсь...
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Настройка кэширования экшена и отправка заголовков

Сообщение yiijeka »

Возможно обращаться к действию, которое будет отдавать заголовки, и дёргать другое действие, которое может быть отдано из кэша.
aquy
Сообщения: 48
Зарегистрирован: 2014.08.21, 09:35

Re: Настройка кэширования экшена и отправка заголовков

Сообщение aquy »

yiijeka писал(а):Возможно обращаться к действию, которое будет отдавать заголовки, и дёргать другое действие, которое может быть отдано из кэша.
как-то не выглядит просто, думаю должно стандартно все срабатывать
aquy
Сообщения: 48
Зарегистрирован: 2014.08.21, 09:35

Re: Настройка кэширования экшена и отправка заголовков

Сообщение aquy »

yiijeka писал(а):Возможно обращаться к действию, которое будет отдавать заголовки, и дёргать другое действие, которое может быть отдано из кэша.
вариант, есть идеи как это можно проверить?
aquy
Сообщения: 48
Зарегистрирован: 2014.08.21, 09:35

Re: Настройка кэширования экшена и отправка заголовков

Сообщение aquy »

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

но вот вопрос про заголовки при использовании кэша остается открытым, как правильно настроить?
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Настройка кэширования экшена и отправка заголовков

Сообщение yiijeka »

Нужно настроить, чтобы выполнялось вот это https://github.com/yiisoft/yii2/blob/ma ... e.php#L191

Наверное, нужно настроить заголовки, через http://www.yiiframework.com/doc-2.0/yii ... mat-detail
Ответить