问题标签 [mod-deflate]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - Apache mod_deflate 和分块传输
我的网站在 Apache 2.2.24 + PHP 5.3.22 上运行。Apache 与 mod_deflate 一起安装,我的 .htaccess 如下所示:
它有效,文件在发送之前被压缩。我想知道是否有任何方法可以使用分块传输,最好将html页面的头部发送到浏览器。
不幸的是,当 DEFLATE 打开时,这不起作用:头部在 10 秒后加载,即当接收到整页时。另一方面,当我尝试从 .htaccess 文件中删除选项以关闭 DEFLATE 时,会在调用 sleep() 函数之前发送头部。
使用最新的 Apache 和 PHP 版本,有没有办法让 mod_deflate 和分块传输一起工作?根据http://www.phpied.com/progressive-rendering-via-multiple-flushes/应该是,但作为一篇旧文章,我想在浪费时间之前听听您的想法。
apache - Apache 中的手动内容压缩
我需要 Apache 上的手动压缩解决方案。我的目标:
- 在我的服务器上提供 gzip 编码的内容以及未压缩的内容。
- 文件是预压缩的。
- 并非所有文件都经过压缩处理。我想指定这些文件,并且选择不是基于类型(扩展名)的。
- 提供了许多内容类型(自定义类型),并且不时出现新类型。此外,文件扩展名不能确定它是否会被压缩(!!!)。
- 保持开销最小(额外的标头越少越好)。
- 始终提供 Content-Length 标头并且从不发送分块响应(这会取消资格
mod_deflate
)。
理想的功能
理想的功能应该是这样的:
- Web 客户端请求文件
file.ext
。 - 如果
file.ext.gz
服务器上存在:Content-Encoding
设置为gzip
。Content-Type
设置为file.ext
( !!! ) 的值。- 服务器返回
file.ext.gz
。
- 否则,
file.ext
返回。
我测试了很多解决方案,这篇文章包含了一个很好的编译,但是标有(!!!)的部分总是有问题。我有数十万个文件和数十种内容类型,因此我正在寻找一些自动解决方案,而无需ForceType
为每个文件添加。
我试过的
多视图
这是如何工作的:
- 将文件重命名
file.ext
为file.ext.en
- 创建文件
file.ext.gz
配置阿帕奇:
/li>
几乎可以按预期工作,只是它要求原始文件 ( file.ext
) 不存在,并且它添加了许多(对我来说无用)无法删除的标题(TCN
以及Content-Language
更多)(Header unset
不会删除它们)。
改写
这是如何工作的: - 创建file.ext.gz
文件。- 配置阿帕奇:
这很好用,但ForceType
每个压缩文件都需要一个。正如我之前所说,我不能依赖扩展,因为并非所有特定类型的文件都会被压缩。
mod_deflate
我没有过多地研究它,问题是如果文件太大,那么它会被分成几块并分块发送并且Content-Length
不提供。增加压缩缓冲区的大小并不能消除这个问题。
是否有可能将 Apache 配置为按我的意愿工作?
我试图动态获取并将其设置为Content-Type
,但我没有找到如何做到这一点的方法。file.ext
file.ext.gz
apache - mod_deflate gzip 对不应该 gzip 的 MIME 类型的响应
我在 Red Hat 6.4 上的 Tomcat 应用程序前面有一个 Apache 2.2.15 实例作为代理。我正在尝试将 Apache 实例配置为对客户端的某些(列入白名单的内容类型)响应进行压缩。Apache 正在使用 mod_jk 连接到 Tomcat(尽管使用 mod_proxy 时存在相同的问题,所以我认为我的问题与 mod_jk 或 Tomcat 无关)。
我有这个非常简单的 mod_deflate 配置:
AddOutputFilterByType DEFLATE text/html
这会导致text/html
响应按预期压缩。但是,当我尝试下载由 Tomcat 生成的文件时,例如内容类型为 的电子表格application/vnd.ms-excel
,这些文件也会被压缩:
以下是直接从 Tomcat 下载文件时的响应标头:
这是通过 Apache 下载文件时:
我不明白为什么 mod_deflate 会压缩这个响应(上图)?
注释掉该行后AddOutputFilterByType DEFLATE text/html
,文件不再被 gzip 压缩,所以我确定触发 mod_deflate 的是该行。同样的问题也存在于内容类型为的文件下载中application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
,可能还有其他问题。但是,从 Tomcat(通过 Apache)下载 javascript 文件并没有被压缩(正如预期的那样,因为内容类型与规则不匹配):
mod_deflate 压缩这些电子表格的事实是一个问题,因为它会导致响应被缓冲,触发分块编码,这是我不想要的,因为我希望浏览器显示进度监视器(这些可能是非常大的文件)。
有任何想法吗?
apache - 如何在 Redhat 系统上的 Apache 2.2.3 上启用分块
我的 Apache(redhat 上的 2.2.3 版)服务器不接受分块编码,抛出此错误:
chunked Transfer-Encoding forbidden: /services/soap
.
我看到有些人有同样的问题,他们建议禁用 mod_deflate.so,我评论了那行:
#LoadModule deflate_module modules/mod_deflate.so
并重新启动 Apache,但我仍然有同样的问题。
我想念什么?!
php - 为 php 脚本启用 GZIP 压缩
我通过这样做在我的 php 脚本上启用了 gzip:
这一直在几个主机上工作,但是当我搬到 Hosting24 时,它根本无法工作。
我还在 cPanel 的优化网站部分中启用了“压缩所有内容”,同时将 .htaccess 文件编辑为如下内容:https ://stackoverflow.com/a/8262235/2237587
Hosting24 向我保证:
我正在这样做,但它不适用于 Hosting24。当我在另一个服务上使用相同的脚本(在 000webhost 和 Arvixe 上测试)时,响应被压缩。
接下来我可以尝试什么来压缩它,老实说,我不知道为什么它已经不起作用了。
.htaccess - 响应关于压缩的谷歌页面速度建议
谷歌页面速度工具告诉我: “使用 gzip 或 deflate 压缩资源可以减少通过网络发送的字节数”
当然还列出了我所有的 .js 和 .css 文件。
在这里研究最终让我想到了这个问题:
如何在 .htaccess 中指定“Vary: Accept-Encoding”标头
这似乎是说,对于 .js 和 .css 文件,我需要做的就是:
有人可以确认这是该目标的当前“最佳实践”并且它是故障安全的,假设用户使用的是现代浏览器(例如,不是 < IE7)
谢谢!
debugging - 在 Vim 中解压 gzip 后的 http 响应
出于调试目的,我从服务器/客户端嗅探了一些请求和响应。压缩已启用,因此响应以 gzip 格式发送。我知道可能我可以禁用mod_deflate
,但是......出于好奇,有没有办法直接在 vim 中解压缩 gzipped 响应?
下面是一个响应示例:
我想选择 gzipped 文本部分并即时解压缩(也许在其上运行终端命令?类似于:!sort
对行进行排序......)
javascript - .js 文件的 Apache AddType 指令不起作用
我在我的几个站点中运行 YSlow,它报告一个 .js 文件未压缩。mod_deflate
当然是启用的(其他 html 和文本文件被压缩):
当直接请求这个 .js 文件时,我使用 Firebug 查看 Apache 发送的 html 标头,并且似乎 Apache 没有发送任何 Content-type 标头指令。我想这就是它没有通过 deflate 过滤器进行压缩的原因。然后,我添加了
在Apache的相应配置文件中,重新启动它,它仍然无法正常工作。请求文件时不发送 Content-Type 标头。
Apache 在 Linux 中运行,启用了 PHP(如果有帮助的话)。mod_mime
模块也被启用。
apache - Apache GZIP 压缩不压缩其他目录中的 js/css
我正在尝试使用“mod_deflate”(和其他需要扩展)将 GZIP 压缩应用于我的本地托管站点(Apache,2.4.4.0)。
这是我正在使用的代码(.htaccess):
我试图通过添加来修复它:
因为我认为它只是无法识别类型,但它也不起作用。JS 和 CSS 文件都位于 rootfolder/js 和 rootfolder/css,那可能是程序吗?
编辑:我正在使用 YSlow @ Chrome 来查看它是否有效。