使用X-Sendfile返回gzip压缩文件时如何设置Content-Encoding

时间:2016-11-02 12:45:33

标签: apache x-sendfile

我在磁盘上压缩了数据文件和图像。我希望通过设置Content-Encoding: gzip响应标头,使用Apache为它们提供服务并让浏览器解压缩它们。基本上是什么mod_gzip,但我的数据已经被gzip压缩,所以在发送之前我不需要再次gzip。

但我使用mod_xsendfile。我的应用程序是用Django编写的,它运行在Apache代理之后。数据文件的URL首先转到Django,Django检查权限并找到磁盘上文件的正确路径;然后生成Apache看到的X-Sendfile: <path>标头,以便它返回文件(这由mod_xsendfile模块完成)。

如果我在Django中设置Content-Encoding标题,mod_xsendfile会删除它;正如其文件所述,

  

Content-Encoding标头 - 如果存在 - 将被删除,因为模块无法知道它是否是由程序员或处理程序设置的。例如。启用输出压缩的php将设置此标头,但通过mod_xsendfile发送的替换文件很可能不会被压缩。

所以我不能做我想做的事。

有没有办法把标题重新放入我想要返回的文件中,可能是在Apache配置中?

0 个答案:

没有答案