0

我的控制器中有这个 cakephp 清单方法,可以动态创建清单文件。感谢$this->RequestHandler->setContent('manifest', 'text/cache-manifest' );,我可以正确设置 MIME 类型,一切正常。

现在的问题是我的manifest文件变得非常大,包含很多行,最后它的尺寸达到了大约72Kb,这导致文件在下载时被分成了两个或更多的块,并且读取了最终文件作为文本/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

我必须在什么级别进行更改才能解决此问题?阿帕奇级别?PHP/Cakephp 级别?

4

1 回答 1

0

使用响应类

cakephp 的正常响应不处理分块请求 - 这通常仅适用于下载/静态文件。

但是,您可以将响应写入文件,然后使用sendFile发送响应,该响应将像对待任何资产一样尊重分块请求。

或者让 Apache 来做

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

于 2013-06-27T08:07:40.497 回答