0
发送这是我的控制器代码:浏览器不缓存响应由MediaView
$this->viewClass = 'Media';
$params = array(
'id' => $filename '.gif',
'name' => $filename ,
'download' => false,
'extension' => 'gif',
'path' => $folderpath,
'cache' => '+30 days',
'modified' => '@' . filemtime($pathtofile),
);
$this->set($params);
和响应:
firebug screenshot http://i39.tinypic.com/es56di.png
调试在core.php中禁用。但是,浏览器(Firefox,Chrome)永远不会缓存该文件并始终下载整个文件。这是因为200 OK的回应?我该如何解决它?
编辑 我也许应该增加实际的请求URL
http://localhost/mycontroller/mymediaaction/2345
我由名属性设置为动作参数,而不是实际的文件名,解决了这个问题的一个样本。对于这种行为的一些解释我仍然很感激。
看起来像你最后修改的是一种无效(设置为0)。也许这会影响到它? – mark
@TiCL我遇到了同样的问题。我的webroot中的图像的状态为“304未修改”。使用“媒体”视图流式传输的webroot外部图像的状态为“200 OK”,浏览器始终必须下载整个图像。你介意阐述你是如何解决这个问题的? – Nick
没关系。只需要添加:if(isset($ _ SERVER ['HTTP_IF_MODIFIED_SINCE'])&& strtotime($ _ SERVER ['HTTP_IF_MODIFIED_SINCE'])== filemtime($ pathtofile)){header('HTTP/1.1 304 Not Modified') ;退出;}' – Nick