问题标签 [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.

0 投票
0 回答
649 浏览

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/应该是,但作为一篇旧文章,我想在浪费时间之前听听您的想法。

0 投票
0 回答
609 浏览

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.extfile.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.extfile.ext.gz

0 投票
1 回答
1142 浏览

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 压缩这些电子表格的事实是一个问题,因为它会导致响应被缓冲,触发分块编码,这是我不想要的,因为我希望浏览器显示进度监视器(这些可能是非常大的文件)。

有任何想法吗?

0 投票
1 回答
332 浏览

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,但我仍然有同样的问题。

我想念什么?!

0 投票
1 回答
3202 浏览

php - 为 php 脚本启用 GZIP 压缩

我通过这样做在我的 php 脚本上启用了 gzip:

这一直在几个主机上工作,但是当我搬到 Hosting24 时,它根本无法工作。

我还在 cPanel 的优化网站部分中启用了“压缩所有内容”,同时将 .htaccess 文件编辑为如下内容:https ://stackoverflow.com/a/8262235/2237587

Hosting24 向我保证:

我正在这样做,但它不适用于 Hosting24。当我在另一个服务上使用相同的脚本(在 000webhost 和 Arvixe 上测试)时,响应被压缩。

接下来我可以尝试什么来压缩它,老实说,我不知道为什么它已经不起作用了。

0 投票
0 回答
63 浏览

.htaccess - 响应关于压缩的谷歌页面速度建议

谷歌页面速度工具告诉我: “使用 gzip 或 deflate 压缩资源可以减少通过网络发送的字节数”

当然还列出了我所有的 .js 和 .css 文件。

在这里研究最终让我想到了这个问题:

如何在 .htaccess 中指定“Vary: Accept-Encoding”标头

这似乎是说,对于 .js 和 .css 文件,我需要做的就是:

有人可以确认这是该目标的当前“最佳实践”并且它是故障安全的,假设用户使用的是现代浏览器(例如,不是 < IE7)

谢谢!

0 投票
1 回答
595 浏览

debugging - 在 Vim 中解压 gzip 后的 http 响应

出于调试目的,我从服务器/客户端嗅探了一些请求和响应。压缩已启用,因此响应以 gzip 格式发送。我知道可能我可以禁用mod_deflate,但是......出于好奇,有没有办法直接在 vim 中解压缩 gzipped 响应?

下面是一个响应示例:

我想选择 gzipped 文本部分并即时解压缩(也许在其上运行终端命令?类似于:!sort对行进行排序......)

0 投票
1 回答
2708 浏览

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模块也被启用。

0 投票
1 回答
15178 浏览

apache - Apache GZIP 压缩不压缩其他目录中的 js/css

我正在尝试使用“mod_deflate”(和其他需要扩展)将 GZIP 压缩应用于我的本地托管站点(Apache,2.4.4.0)。

这是我正在使用的代码(.htaccess):

我试图通过添加来修复它:

因为我认为它只是无法识别类型,但它也不起作用。JS 和 CSS 文件都位于 rootfolder/js 和 rootfolder/css,那可能是程序吗?

编辑:我正在使用 YSlow @ Chrome 来查看它是否有效。

0 投票
1 回答
1774 浏览

php - 如何刷新html页面的gzip压缩部分

我试图让我的页面输出它是 < head > + 一些正文,并将其发送到浏览器。

然后进行一些长的 mysql 查询并输出页面的其余部分。

只要我不压缩内容,它就可以完美地工作。

例子:

我使用的代码的简化示例:

在这里看到它,但没有 gzip

或者我正在努力的工作:

哪个不起作用,请参阅:here

我需要它在我的应用程序中工作,但不是在所有页面上工作(有些不需要 gzip 或者是自己处理它的库,例如 caldav 库),所以我更喜欢 php 解决方案,而不是使用 .htaccess 在应用程序范围内启用 deflate

我该怎么做才能使刷新 gzip 内容起作用?