我已经为服务器实现了媒体视图,否则受保护的图像。控制器处理请求并检查权限并相应地为文件提供服务$this->response->file
。
但是,我还没有设法缓存图像,迫使浏览器总是重新下载(我从 Firebug 的网络面板知道这一点)。这些文件不太可能改变,因此缓存会大大加快速度。
我玩过使用$this->response->modified()
,cache()
但无济于事。
如何在控制器操作中实施检查以服务器文件或未修改状态代码?还是我离这儿很远?
任何帮助表示赞赏!:)
public function view($id)
{
$this->loadModel('Image');
$res = $this->Image->hasAccess($id, $this->Auth->user('subject_id'));
if($res['access'] || $this->isAdmin()){
$modified = gmdate("D, j M Y G:i:s ", filemtime ( APP . "Content/Images/" . $res['file']));
$this->response->modified($modified);
$this->response->expires(time() + 60 * 60 * 24 * 31);
$this->response->file( APP . "Content/Images/" . $res['file']);
}else if($res['access'] === false){
$this->response->statusCode(403);
}else if($res['access'] === null){
$this->response->statusCode(404);
}
return $this->response;
}