我需要防止 pdf 对象被 gzip 压缩。实际上,这仅在请求来自 Mozilla 浏览器时才需要发生(但由于我无法获得像 application/pdf 的 no-gzip 这样简单的东西,我认为从那里开始更明智)。通过查看 mod_filter 上的 apache 文档,我得到了以下内容:
<Location />
FilterDeclare gzipDeflate CONTENT_SET
FilterDeclare gzipInflate CONTENT_SET
FilterProvider gzipDeflate deflate req=User-Agent $Mozilla/
FilterProvider gzipInflate inflate resp=Content-Type $application/
FilterChain +gzipDeflate +gzipInflate
</Location>
根据我的测试,gzipDeflate 过滤器正在发挥作用,所有 Content-Type 不以 application 开头的页面都将被压缩。但是,gzipInflate 似乎根本不起作用。我在 Firebug 中检查了响应,并验证了发送的 Content-Type 是 application/pdf。不过,我还是要问一个可能很愚蠢的问题:
响应的 Content-Type 标头完整地显示为“application/pdf; charset=Windows-1252”。这有什么不同吗?或者 $application/ 大概足以捕获该信息?
任何帮助是极大的赞赏。
还有一点,返回 pdf 对象的 URL 没有 .pdf 扩展名。pdf 本身作为 blob 存储在 Oracle 数据库中,并在适当的时候附加到页面(系统中的所有 URL 使用相同的基线)。这是 stackoverflow 上一位热心成员最初询问的一部分,他向我介绍了 mod_filter,并建议我在此处发布问题。
答案1
事实证明我所做的并没有什么问题。位置标签中的第 1 行是:
SetOutputFilter DEFLATE
删除它之后,一切正常。