我的控制器中有这个cakephp清单方法,可以动态创建清单文件。感谢$this->RequestHandler->setContent('manifest', 'text/cache-manifest' );
,我可以正确设置MIME类型,一切正常。
现在问题是我的清单文件变得非常大,它包含很多行,最后它的维度达到了大约72Kb,这导致文件在下载时分成两个或更多块,最后文件被读作text / html而不再是cache-manifest!
这就是标题嗅探器告诉我的事实:
清单的小版本:
HTTP Response Header
Name Value Delim
Status: HTTP/1.1 200 OK
Content-Type: text/cache-manifest; charset=UTF-8
Date: Wed, 26 Jun 2013 14:23:34 GMT
Server: Apache/2.2.22 (Unix) PHP/5.3.10
X-Powered-By: PHP/5.3.10
Content-Length: 843
Connection: Close
而大清单:
HTTP Response Header
Name Value Delim
Status: HTTP/1.1 200 OK
Content-Type: text/html
Date: Wed, 26 Jun 2013 14:05:23 GMT
Server: Apache/2.2.22 (Unix) PHP/5.3.10
X-Powered-By: PHP/5.3.10
transfer-encoding: chunked
Connection: Close
我需要在什么级别改变才能解决这个问题? Apache级别? Php / Cakephp等级?
答案 0 :(得分:0)
来自cakephp的正常回复不会处理分块请求 - 这通常只适用于下载/静态文件。
然而,您可以将您的回复写入文件,然后使用sendFile发送响应,这将响应任何资产的分块请求。
或者,在部署时(或在第一次请求时)将缓存清单写入webroot并让apache处理它。那么您的责任只是确保文件的内容在必要时更新(由您的应用程序逻辑确定)。