In order to mark a response as not modified, you need to set at least
the Last-Modified etag response header before calling this method. Otherwise
a comparison will not be possible.
public checkNotModified ( Cake\Network\Request $request ) : boolean | ||
$request | Cake\Network\Request | Request object |
return | boolean | Whether the response was marked as not modified or not. |
/** * Checks if the response can be considered different according to the request * headers, and the caching response headers. If it was not modified, then the * render process is skipped. And the client will get a blank response with a * "304 Not Modified" header. * * - If Router::extensions() is enabled, the layout and template type are * switched based on the parsed extension or Accept-Type header. For example, * if `controller/action.xml` is requested, the view path becomes * `app/View/Controller/xml/action.ctp`. Also if `controller/action` is * requested with `Accept-Type: application/xml` in the headers the view * path will become `app/View/Controller/xml/action.ctp`. Layout and template * types will only switch to mime-types recognized by Cake\Network\Response. * If you need to declare additional mime-types, you can do so using * Cake\Network\Response::type() in your controller's beforeFilter() method. * - If a helper with the same name as the extension exists, it is added to * the controller. * - If the extension is of a type that RequestHandler understands, it will * set that Content-type in the response header. * * @param Event $event The Controller.beforeRender event. * @return bool false if the render process should be aborted */ public function beforeRender(Event $event) { $isRecognized = !in_array($this->ext, ['html', 'htm']) && $this->response->getMimeType($this->ext); if (!empty($this->ext) && $isRecognized) { $this->renderAs($event->subject(), $this->ext); } elseif (empty($this->ext) || in_array($this->ext, ['html', 'htm'])) { $this->respondAs('html', ['charset' => Configure::read('App.encoding')]); } if ($this->_config['checkHttpCache'] && $this->response->checkNotModified($this->request)) { return false; } }
/** * Checks if the response can be considered different according to the request * headers, and the caching response headers. If it was not modified, then the * render process is skipped. And the client will get a blank response with a * "304 Not Modified" header. * * @param Event $event The Controller.beforeRender event. * @return bool false if the render process should be aborted */ public function beforeRender(Event $event) { if ($this->_config['checkHttpCache'] && $this->response->checkNotModified($this->request)) { return false; } }