У меня есть вопрос о том, как кэширование представлений и кэширование в браузере работают вместе в CakePHP 2.1.
Я только что обновил свое приложение до CakePHP 2.1 и настроил кэширование HTTP, используя новый метод $this->response->modified
(который работает хорошо):
class ArticlesController extends AppController {
public function view($id) {
$article = $this->Article->find(
'first',
array('conditions' => array('Article.id' => $id))
);
$this->response->modified($article['Article']['modified']);
$this->set(compact('article'));
}
}
Я также настроил кэширование представления CakePHP:
class ArticlesController extends AppController {
public $cacheAction = array(
'view' => array('callbacks' => true, 'duration' => "1 week"),
}
}
Оба работают хорошо, когда используются независимо друг от друга. Однако, когда оба включены, кэширование представлений CakePHP, кажется, переопределяет кэширование браузера (в частности, заголовок Last-Modified
не отправляется, когда страницы обслуживаются из кэша представлений CakePHP). Это останавливает браузер от кэширования страниц, которые обслуживаются из кэша представления CakePHP.
В идеале я хотел бы, чтобы браузер кэшировал страницы, даже если они обслуживаются из кэша CakePHP (то есть я бы хотел, чтобы CakePHP возвращал заголовок Last-Modified
и отвечал на заголовок запроса If-Modified-Since
браузера, независимо от того, CakePHP возвращает кэшированную копию страницы или нет).
Мне просто интересно, является ли это ожидаемым поведением, делаю ли я что-то не так, или это что-то, что не рассматривалось (или не считается важным).