httpcache заголовки Last-Modified и ETag

Всё что касается построения API
Ответить
novi40k
Сообщения: 8
Зарегистрирован: 2018.04.12, 15:46

httpcache заголовки Last-Modified и ETag

Сообщение novi40k » 2018.04.19, 21:59

Есть REST API. Не работает кеширование по ETag, т.е. происходит добавление новой записи в таблицу CITY. А GET запрос site.ru/api/PEOPLES/index отдаётся со статусом "304 Not Modified". И таким образом не происходит подкачки актуальных данных!

Можно ли настроить кеширование по заголовку "lastModified", но использовать запрос с другой таблицы?
Т.е. мы добавляем запись в таблицу CITY, а таблица PEOPLES("select * from CITY where status = 1") является просто представлением (вьюхой) CITY.
При этом значению в колонке 'SET_DATE' присваивается timestamp в формате 18.04.18 11:22:33,123000
Например: PeoplesController.php

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

class PeoplesController extends RestController {
public $modelClass = 'app\models\api\PEOPLES';
public function behaviors()
{
    return [
        [
            'class' => 'yii\filters\HttpCache',
            'only' => ['index'],
            'cacheControlHeader' => 'public, max-age=0, must-revalidate',
            'lastModified' => function ($action, $params) {
                $lm = new \yii\db\Query();
                return $lm->from('CITY')->max('SET_DATE');
            },
        ],
    ];
}
}
Можно ли настроить кеширование в такой ситуации по ETag?

Ответить