问题标签 [http-compression]
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.
iis - 如何防止对已压缩的响应进行默认 IIS 压缩?
TLDR
我有一个IHttpHandler
执行压缩的。它自己工作得很好。但是后来我添加了IHttpModule
一个对这些(以及所有其他)响应执行完全不相关的任务,现在 IIS 正在重新压缩已经压缩的响应。我怎样才能防止这种情况?
整个故事
我有一个IHttpHandler
为 CSS 和 JS 文件执行组合和压缩(除其他外)的实现。作品中的一切都IHttpHandler
完全符合我的要求。
但随后我添加了一个实现,该实现从事件期间的所有响应(包括由 生成的动态响应)IHttpModule
中删除了不必要的响应标头(Server
、X-AspNet-Version
等)。IHttpHandler
PreSendRequestHeaders
但是,似乎简单地注册一个IHttpModule
,无论它实际做什么,都会导致 IIS 对响应应用压缩,即使响应已经被压缩。
因此,我IHttpHandler
明确压缩响应并设置Content-Encoding
标头,然后(当且仅当)IHttpModule
也注册了,IIS 重新压缩响应(因此存在浏览器无法读取的双重压缩响应)。
我不想禁用所有默认压缩。我仍然希望视图中的 HTML 被压缩(并且我希望任何不通过的 CSS 和 JSIHttpHandler
也被默认压缩)。
我猜我的问题没有简单的解决方案,因为它似乎是 IIS 中的一个错误。IIS 不应压缩已压缩的响应。
我尝试将以下内容添加到我的 web.config 中,但没有效果:
(根据我对文档的解释,应该禁用动态生成的 CSS 和 JS 的压缩。)
我也试过这个,没有效果:
(根据我对文档的解释,应该禁用所有默认压缩。)
更新
在我的最后IHttpHandler
,我打电话context.Response.Flush
。如果我删除此调用,则响应不会被双重压缩。作为解决方案,我很好。谁能解释为什么会这样?
更新 2
我最好的猜测是调用Flush
会将响应置于 IIS 认为响应尚未压缩的状态(因此它会应用默认压缩)。即使在我的模块中我可以同时检查...
- 包含标题
Response.Headers
和Content-Encoding
- 那
Response.Filter
是非null
并且是其中一种System.IO.Compression
类型。
不知道为什么 IIS 无法确定响应已经从这些事实中压缩。
performance - IIS 7.5 压缩与 IIS 6 相比没有效果
我在 IIS 7.5 上激活了压缩功能(动态和静态)。
但是,我看到网站加载非常缓慢,而且我根本感觉不到任何压缩,尤其是对于 SWF、JPG、CSS、JS 和 ASPX 扩展。
在 IIS 6 中,我曾经编辑元数据库文件以将这些扩展添加到压缩中。我应该对 IIS 7.5 做同样的事情吗?
我要编辑的文件是什么,具体是哪个部分?
请帮忙。谢谢。
javascript - JavaScript 缩小和压缩
我正在尝试了解 JavaScript 缩小和压缩过程,并对此有几个问题:
- 由于缩小使代码难以调试,是否可以在客户端进行按需去缩小以掩盖您实际需要在网站上调试和调查某些内容的情况?
- 我记得在某处读到可以通过在 Apache Web 服务器中设置一些选项来启用所有资源(如图像、CSS、JavaScript 等)的压缩。在 Apache 级别完成的 JavaScript 压缩和使用 YUI Compressor 等工具完成的压缩有什么区别吗?
有人可以帮我了解以上内容吗?
我实际上需要去缩小我的 JavaScript 文件的那种情况是假设在第 1 行发生了 JavaScript 错误。X. 对于缩小的文件,很难知道哪个代码块导致了生产中的错误,因为这些行都包含在一个缩小的文件中。在这种情况下,你们如何调查和调试?另一位用户还提到了在 IE6 中失败的打包/缩小 javascript 中的这个调试问题 - 如何调试?问题(虽然略微特定于 IE6)。
wcf - 我可以在 WCF 中使用 net.TCP 和 GZip 技术吗
我们可以使用 net.TCP 绑定在 WCF 中实现 GZip,还是只能配置 Http 和 WsHttp 绑定。
c# - 如果发生异常,“Content-encoding”标头将从 HttpHandler 响应中消失
我有一个自定义 HttpHandler ,我在其中手动启用输出压缩,如下所示:
这适用于大多数请求,但是当遇到异常时,“Content-encoding”标头会从响应中消失,而压缩过滤器仍然存在。结果是错误页面被 gzip 压缩,但浏览器没有收到表明这一事实的标题。然后浏览器尝试将仍然压缩的数据显示为文本,即gobbledygook。
完整的测试用例代码如下所示。尝试交替禁用压缩或不引发异常。
谁能解释为什么“内容编码”标题消失了?
我想我可以简单地启用压缩作为处理程序所做的最后一件事,这样如果遇到异常,它就永远不会到达添加压缩过滤器的位置;但我看到的行为让我觉得是个错误。任何人都可以确认吗?
编辑:我在测试用例中看到的静止编码响应的屏幕截图:http: //i.imgur.com/49Vcl.png
http - 使用 GZIP 压缩下载文件时出现“内容解码失败”错误
我的网络应用程序会即时生成一个 CSV 文件,但每当我使用 GZIP 压缩时,下载都会失败:
下载在 Google Chrome 中显示为“已中断”,在 Internet Explorer 中显示为“内容解码失败”的错误。
解决方案是禁用该操作的压缩,但是......为什么会发生这种情况?
干杯。
更新:我使用的压缩过滤器:
gzip - 为什么各大网站都使用gzip?
我刚刚搜索了gzip和Deflate,发现 Deflate 更好。
- GZip 或 Deflate 用于 HTTP 压缩
- 为什么对 Apache 提供的文本文件使用 deflate 而不是 gzip?
- 选择 gzip 而不是 deflate 进行 http 压缩是否会影响性能?
- Deflate 压缩浏览器的兼容性和优于 GZIP 的优势
但是当我检查 Google、Facebook 和 StackExchange 的响应标头时,它们都在使用 GZIP。为什么他们使用 gzip 而不是 Deflate?
javascript - 合并和缩小多个 CSS / JS 文件
我正在尝试通过合并和压缩 CSS 和 JS 文件来优化网站性能。我的问题更多是关于如何实现这一目标的(具体)步骤,考虑到我所面临的真实情况(不过,在其他开发人员中也应该是典型的)。
我的页面引用了几个 CSS 和 JS 文件,如下所示:
对于生产版本,我想将 3 个 CSS 文件合并为一个,并使用例如YUI Compressor将其缩小。但是,我需要更新所有需要这 3 个文件以引用新缩小的 CSS 的页面。这似乎很容易出错(例如,您要在许多文件中删除和添加一些行)。还有其他风险较低的方法吗?JS文件的同样问题。
performance - 节点的 SDCH 压缩?
Node是否有SDCH (基于 HTTP 的共享字典压缩)库?(或与此相关的任何其他实现?)
在 npm 上快速搜索一无所获。
compression - 网页压缩
我是网站压缩的新手,并且不熟悉这样做的方法。我想知道如何压缩所有页面内容和来源,如css、JS、图像等。我知道这可能是一个大话题,但总是从简单的问题和答案开始。
我是否必须以特定格式压缩内容,或者有办法做到这一点?
更新#1
我在优化器网站上测试了我的一些网页以了解情况如何,但结果证明我需要大量的内容压缩。那么现在在 Apache 上进行压缩的正确方法是什么?