应用程序缓存清单分块

时间:2013-06-26 14:26:15

标签: cakephp caching manifest chunked

我的控制器中有这个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等级?

1 个答案:

答案 0 :(得分:0)

使用响应类

来自cakephp的正常回复不会处理分块请求 - 这通常只适用于下载/静态文件。

然而,您可以将您的回复写入文件,然后使用sendFile发送响应,这将响应任何资产的分块请求。

或者让Apache这样做

或者,在部署时(或在第一次请求时)将缓存清单写入webroot并让apache处理它。那么您的责任只是确保文件的内容在必要时更新(由您的应用程序逻辑确定)。