Имеется бэкэнд на Yii2. Контроллер перед ответом проверяет:
$behaviors['httpCache']=[
'class' => 'yii\filters\HttpCache',
'only' => ['index','test'],
'lastModified' => function ($action, $params) {
$q = new \yii\db\Query();
return $q->from('user')->max('updated_at');
},
];
Если ответ не менялся, то браузер возвращает закешированный ответ.
Подняли приложение на ангуляре, где реализовали следующее:
$scope.linkto = function() {
$http.get("http://yii-application/frontend/web/users?access-token=1234567", {crossDomain:true, xhrFields: {withCredentials:true}})
.success( function (data) {
console.log(data);
$scope.news = data;
})
.error(function(jqXHR, textStatus, errorThrown) {
console.log("error " + textStatus);
})
}
$scope.linkto();
И html:
<div ng-controller="TabController">
<button ng-click="linkto()">clickme</button>
</div>
Если функция выполняется при загрузке страницы, то все работает отлично - проверяется запрос, если ничего не менялось отдается 304 Not modified. Если менялся - то получаем новый ответ, соответсвенно и время получения ответа увеличивается.
А вот если нажимать на кнопку, которая вызывает ту же функцию, то эти условия не выполняются и всегда приходит 200 OK from cache. Даже если поменяется ответ. Вот такая заковыка...
Помогите разобратсья