标签: http-compression

使用ASP.NET Web API启用HTTP压缩

我们从Asp .NET Web API为网站提供文件:

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        var clientHostname = System.Configuration.ConfigurationManager.AppSettings["ClientHostname"];

        var staticFileOptions = new StaticFileOptions()
        {
            OnPrepareResponse = staticFileResponseContext =>
            {
                staticFileResponseContext.OwinContext.Response.Headers.Add("Cache-Control", new[] { "public", "max-age=0" });
            }
        };

        app.MapWhen(ctx => ctx.Request.Headers.Get("Host").Equals(clientHostname), app2 =>
        {
            app2.Use((context, next) =>
            {
                if (context.Request.Path.HasValue == false || context.Request.Path.ToString() == "/") // Serve index.html by default at root
                {
                    context.Request.Path = new PathString("/Client/index.html");
                }
                else // Serve file
                {
                    context.Request.Path = new PathString($"/Client{context.Request.Path}");
                }

                return next();
            }); …
Run Code Online (Sandbox Code Playgroud)

c# asp.net iis http-compression asp.net-web-api

13
推荐指数
1
解决办法
5375
查看次数

处理HTTP ContentEncoding"deflate"

应该使用什么InputStream类型来处理将HTTP Content-Encoding设置为deflate的 URLConnection流?

对于gzip或zip的Content-Encoding,我使用GZIPInputStream,没问题.

对于"deflate"的Content-Encoding,我尝试过使用InflaterInputStreamDeflaterInputStream,但是我得到了

java.util.zip.ZipException:java.util.zip.InflaterInputStream.read中的未知压缩方法(InflaterInputStream.java:147)

我的理解是"deflate"编码是指Zlib压缩,根据文档,这应该由InflaterInputStream处理.

java http content-encoding http-compression

12
推荐指数
1
解决办法
2万
查看次数

Windows 8显然从压缩的HTTP响应中删除了内容编码头

我不完全确定这是否属于SO,但我不知道还有什么要问的.

当我检查我的网络应用程序的加载速度时,我注意到显然没有HTTP响应(无论什么类型 - html,css,js)是压缩gzip/deflate.也就是说,任何请求中都不存在像"Content-Encoding:gzip"这样的响应标头,并且浏览器报告资源未被压缩.

  • 在多种浏览器中测试和确认(IE10,FF 17,Chrome 23,Opera 12.10,Safari 5.x)
  • 在运行Windows 8 Pro的两台计算机上测试并确认
  • 使用Fiddler进行双重检查 - 响应未压缩且不包含内容编码标头
  • 这不只是发生于我的网络应用程序,没有我测试的其他网站出现发送压缩响应(根据浏览器)
  • 在Windows 7上,响应压缩并带有所有标头
  • HTTPS响应压缩

以下是响应标头的示例(请注意缺少内容编码标头): 客户端计算机上的响应头

我还检查了服务器端.服务器正在运行Windows Server 2008 R2/IIS 7.5.我使用Failed Request Tracing查找服务器发送的内容.资源似乎是压缩的:

服务器端压缩

此外,服务器似乎发送正确的标头:

压缩标头

我的结论是:必须是Windows 8谁在这里进行干预.显然它修改了HTTP响应.我想Windows 8正在接收压缩响应,对其进行解压缩,删除内容编码头并将修改后的响应传递到管道下方.

现在我的问题:

  • 任何人都可以确认Windows 8修改HTTP响应并且它按照我描述的方式工作吗?
  • 有没有办法监控甚至禁用此行为?

提前感谢您的回答.

问候,安德烈


更新:我使用Wireshark查看到达客户端的内容.正如我所料,资源被压缩,内容编码头仍然存在.下图显示了wireshark协议,右下角显示了Chrome收到的响应.

Wireshark的

这证实了我的假设,即Windows 8正在介入.

http http-compression http-headers windows-8

12
推荐指数
1
解决办法
2520
查看次数

如何使用Spring RestTemplate压缩压缩HTTP请求?

如何gzip 创建的HTTP 请求org.springframework.web.client.RestTemplate?

我正在使用Spring 4.2.6Spring Boot 1.3.5(Java SE,而不是Android或Javascript在Web浏览器中).

我正在做一些非常大的POST请求,我希望压缩请求体.

java spring http http-compression

12
推荐指数
1
解决办法
6781
查看次数

ASP.NET MVC - 压缩+缓存

我已经看到了向ASP.Net MVC输出添加GZIP/DEFLATE压缩的一些选项,但它们似乎都在运行中应用了压缩...因此不需要缓存压缩内容.

任何启用压缩页面输出缓存的解决方案?优选地,在代码中,使得MVC代码可以检查页面是否已经改变,并且如果不是,则发出预压缩的高速缓存的内容.

这个问题也可以适用于常规的asp.net.

compression asp.net asp.net-mvc http-compression asp.net-mvc-2

11
推荐指数
1
解决办法
3988
查看次数

MVC4 WebAPI没有压缩GET响应

我正在开发一个使用MVC4 WebAPI(RC)的项目.响应不是gzip压缩的(IIS中的动态压缩已启用).

普通MVC控制器的响应被压缩.我是否需要特定设置才能为WebAPI响应启用gzip压缩?

我可以添加一个自定义压缩处理程序,但如果可能的话,我只想使用内置的IIS压缩.

顺便说一句,我知道这几乎是压缩HTTP GET响应的重复,但是那里接受的答案并没有真正回答我的问题.

asp.net-mvc gzip http-compression asp.net-mvc-4 asp.net-web-api

10
推荐指数
1
解决办法
4695
查看次数

如何为IIS 7上的SOAP WebService的POST(上载)请求启用GZIP压缩?

如何为上传到.NET WebService(SOAP,而不是WCF)的POSTed数据启用压缩?我认为在IIS 中启用动态压缩是一件简单的事情,但在启用后,它只会压缩响应,而不是压缩POST 请求.

我已将其添加为服务引用,但我无法在生成的SOAPClient上找到任何设置来启用请求压缩.

似乎我可能在客户端缺少配置设置或代码来压缩请求,然后再将其发送到服务器?或者我正在尝试做什么(GZipping POST数据)甚至不支持?

更多信息:我在客户端和服务器上使用.NET 4.0.

asp.net iis-7 web-services http-compression

10
推荐指数
2
解决办法
2万
查看次数

GZIP压缩+ htaccess放气

我可以同时使用.htaccess:

  DEFLATE 
Run Code Online (Sandbox Code Playgroud)

在PHP,图像,HTML文件等+ php标题:

  ob_start("gzhandler") ?
Run Code Online (Sandbox Code Playgroud)

如果不是,最好的机会是什么?我只是担心它是否会发生冲突.

php compression gzip http-compression

9
推荐指数
1
解决办法
3万
查看次数

IIS应用程序缺少Content-Encoding - 响应标头中的gzip

在Firebug中,请求标头具有以下条目:
Accept-Encoding:gzip,deflate

但是没有:
Content-Encoding:gzip
在Response Header中.

无论我尝试过什么,在SO和其他网站上的一些答案后,似乎没有任何作用!静态文件或动态文件都没有被压缩,或者至少如果它们没有内容编码 - gzip值会在响应头中返回.

以下是我的web.config设置示例:

<urlCompression doDynamicCompression="true" doStaticCompression="true" dynamicCompressionBeforeCache="true" />
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" minFileSizeForComp="150" staticCompressionIgnoreHitFrequency="true">
  <remove name="gzip" />
  <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" staticCompressionLevel="8" dynamicCompressionLevel="8" />
</httpCompression>
Run Code Online (Sandbox Code Playgroud)

我忽略了命中频率
staticCompressionIgnoreHitFrequency="true"

我已经确认IIS实际上压缩了我可以看到的文件:
C:\ inetpub\temp\IIS临时压缩文件

如此处指定:在IIS 8 Windows 8中设置gzip
我已确保在Windows功能> Internet信息服务> WWW服务>性能功能中启用了静态和动态压缩

我也试过这个人的方法:
IIS 7.5压缩创建压缩文件但返回非压缩文件


编辑1:
IIS版本是10但我也在IIS 8.5上尝试过这个


编辑2:
我现在也尝试了在这个链接上找到的各种配置文件:https: //github.com/h5bp/server-configs-iis/,它提供了一些看起来像'最佳实践'的web.config文件.
没解决


编辑3:
基于@Nkosi的输入,我创建了一个全新的Asp.net MVC应用程序,并使用我尝试的所有这些选项对其进行配置.这是我从Fiddler得到的原始标题:

HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/javascript; charset=UTF-8
Expires: Wed, 20 Jul 2016 18:22:47 GMT
Last-Modified: Wed, 20 …
Run Code Online (Sandbox Code Playgroud)

asp.net iis http-compression iis-10

9
推荐指数
1
解决办法
7472
查看次数

web.config ASP.NET IIS7.5中的httpCompression覆盖

我在我的web.config中有这个代码,用于在IIS 7.5中运行的ASP.NET 4.5网站

<system.webServer>
  <urlCompression doStaticCompression="true" doDynamicCompression="true"
  dynamicCompressionBeforeCache="true" />
  <httpCompression>
    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" 
    staticCompressionLevel="9" dynamicCompressionLevel="4"  />
  </httpCompression>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

(为了更好的阅读,我强行换了一条新线)

我想知道是否有空(没有directory ="..."和其他类似的内部元素)会导致问题,或者从IIS applicationHost.config中正确读取此部分的默认属性/元素

我在这里尝试做的只是在web.config中设置压缩和压缩比,而不覆盖或清除其他默认值.我可以从web.config中的方案中删除name ="gzip"dll ="%Windir%\ system32\inetsrv\gzip.dll",只需在scheme标签中保留staticCompressionLevel和dynamicCompressionLevel吗?是否可以从applicationHost.config中读取这些属性

web-config http-compression iis-7.5 asp.net-4.5

8
推荐指数
0
解决办法
3658
查看次数