我的控制器中有这个cakephp清单方法,它可以动态地创建清单文件。多亏了$this->RequestHandler->setContent('manifest', 'text/cache-manifest' );,我可以正确地设置MIME类型,并且一切正常。
现在的问题是,我的清单文件变得非常大,它包含很多行,最后它的大小达到大约72Kb,这导致文件在下载时被分成两个或更多个块,最终的文件被读取为text/html,而不再是缓存清单!
这是一个标题嗅探器告诉我的,事实上:
清单的小版本:
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级别?
发布于 2013-06-27 16:07:40
使用response类
cakephp的正常响应不会处理分块请求--这通常只适用于下载/静态文件。
但是,您可以将响应写入文件,然后使用sendFile发送响应,该响应将像对待任何资产一样对待分块请求。
或者让Apache来做
或者,在部署时(或在第一次请求时)将缓存清单写入webroot,并让apache处理它。然后,您的责任将只是确保在必要时(由应用程序逻辑确定)更新文件的内容。
https://stackoverflow.com/questions/17322878
复制相似问题