没有Content的内容长度标题

时间:2013-10-02 10:02:25

标签: xcode cocoa-touch nginx

我有一个报摊应用程序,它使用一个栏来显示下载进度。它的工作原理是从文件下载中获取内容长度。这曾经在我们的开发服务器上工作,但是我们使用nginx服务器进行生产,它似乎没有返回内容长度标题。

有谁知道为什么会这样或更好的解决方案?

由于

1 个答案:

答案 0 :(得分:0)

缺少Content-Length标头可能是由于您在实时服务器上启用了压缩而在启动服务器上没有启用压缩。由于Nginx会在发送数据时压缩数据,因此无法在响应开始时发送Content-Length标头,因为服务器无法知道压缩后数据的大小。

如果您需要Content-Length标头用于下载进度,那么最好的选择是自己压缩内容,将Content-Length标头设置为压缩数据的大小,然后提供压缩数据。

虽然第一个用户下载该内容的速度稍慢,但如果您对压缩文件使用唯一的文件名,则可以将其用作有效的缓存机制,并使用用户请求中的参数生成文件名。然后,您还可以使用Nginx的x-sendfile功能来减轻服务器的负载。

顺便说一句,如果您使用的是Amazon CloudFront CDN(可能还有其他人),您真的应该设置Content-Length标头,因为它们可以提供部分(也称为损坏的)文件,如果没有Content-Length标头和下载从您的服务器到CloudFront在传输过程中被中断。