标签: http-compression

为WIndows Azure网站配置httpCompression设置

无论如何控制Windows Azure网站中的压缩设置.

我想启用动态json压缩,并且可以通过相应地配置applicationHosts.config文件,成功地在内部部署站点上执行此操作.

在Windows Azure网站上有这样的选择吗?(不是网络角色)

http-compression azure

7
推荐指数
1
解决办法
1449
查看次数

即使在applicationHost.config中允许,gzip压缩也无法正常工作

我想为使用IIS7.5在ASP.NET4.5上运行的站点启用gzip压缩,但是无法让它压缩.

我在共享主机上,所以我不能直接在IIS中设置它.

的applicationHost.config

我将其更改Deny为Allow(我在此处读到我不应该更改allowDefinition设置:如何在IIS 7中使用appcmd更改allowDefinition节属性?)

<section name="httpCompression" allowDefinition="AppHostOnly" overrideModeDefault="Allow" />
Run Code Online (Sandbox Code Playgroud)

我的网站的web.config

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
  <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll"/>
  <dynamicTypes>
    <add mimeType="text/*" enabled="true"/>
    <add mimeType="message/*" enabled="true"/>
    <add mimeType="application/javascript" enabled="true"/>
    <add mimeType="application/x-javascript" enabled="true"/>
    <add mimeType="application/javascript; charset=utf-8" enabled="true"/>
    <add mimeType="*/*" enabled="false"/>
  </dynamicTypes>
  <staticTypes>
    <add mimeType="text/*" enabled="true"/>
    <add mimeType="message/*" enabled="true"/>
    <add mimeType="application/javascript" enabled="true"/>
    <add mimeType="application/x-javascript" enabled="true"/>
    <add mimeType="application/javascript; charset=utf-8" enabled="true"/>
    <add mimeType="*/*" enabled="false"/>
  </staticTypes>
</httpCompression>    
Run Code Online (Sandbox Code Playgroud)

作为上述的替代,我也尝试将其添加到我的web.config:

<configuration>
   <system.webServer>
      <urlCompression doStaticCompression="true" doDynamicCompression="false" />
   </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

我在Windows …

asp.net gzip web-config http-compression applicationhost

7
推荐指数
1
解决办法
4816
查看次数

Accept-Encoding标头由浏览器发送但服务器未收到

我一直试图调试这几周.我家网络上所有客户端上的所有浏览器都在发送'Accept-Encoding:gzip,deflate'.但是,该标题以某种方式,在请求进入Web服务器之前被丢弃.例如,http://www.whatsmyip.org/http_compression/说"不,您的浏览器没有请求压缩内容".

我使用Fiddler来确保我的所有浏览器确实都在发送标题.我换掉了我的路由器.我已经关闭了所有的防病毒软件.

Brighthouse/Roadrunner(当地有线电视ISP)表示他们没有进行任何过滤(在这种情况下我无法理解他们为什么会这样做).

任何建议都是最受欢迎的!

gzip http-compression http-headers

6
推荐指数
1
解决办法
5775
查看次数

使用gzip进行HTTP压缩的可靠性如何?

YSlow建议我使用HTTP压缩来提高网站的性能.但是,正如雅虎所指出的那样,存在一些问题.

浏览器和代理存在已知问题,这些问题可能导致浏览器期望的内容与压缩内容相关的内容不匹配.幸运的是,随着旧浏览器的使用逐渐减少,这些边缘情况正在减少.Apache模块通过自动添加适当的Vary响应头来帮助解决问题.

我知道最常见的问题出现在代理后面的IE6.但今天这些问题有多常见?为了量化它,大约有多少百分比的网络用户遇到HTTP压缩的错误?

gzip http http-compression yslow

6
推荐指数
1
解决办法
386
查看次数

IIS 7压缩无法正常工作

我有一个带有IIS 7的Windows Server 2008 R2.

默认情况下,在IIS中创建站点时,将启用"压缩".我检查了压缩模块,并检查了两个复选框.

现在,我正在使用fiddler检查页面是否正在被压缩,但似乎它们不是因为选择了No Compression并且页面大小超过100 KB.

为什么即使在IIS 7中启用了压缩,页面也不会压缩?

任何建议将受到高度赞赏.

谢谢.

http-compression iis-7.5

6
推荐指数
2
解决办法
9409
查看次数

IIS 7.X静态压缩 - 不经常命中

无论静态文件的访问频率如何,我如何强制IIS 7.X进行静态压缩?如果我在禁用缓存的Firefox中刷新页面,这是静态压缩的唯一方法,因为某些"非常常命中"条件拒绝进行静态压缩,除非经常访问文件.....

更多细节:http://forums.iis.net/t/1162238.aspx

iis iis-7 http-compression

6
推荐指数
1
解决办法
1741
查看次数

OutputCache和自定义gzip压缩过滤器

我有这个自定义过滤器来压缩我的页面输出:

public class EnableCompressionAttribute : ActionFilterAttribute
{
    const CompressionMode compress = CompressionMode.Compress;
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        HttpRequestBase request = filterContext.HttpContext.Request;
        HttpResponseBase response = filterContext.HttpContext.Response;
        string acceptEncoding = request.Headers["Accept-Encoding"];
        if (acceptEncoding == null)
            return;
        if (acceptEncoding.ToLower().Contains("gzip"))
        {
            response.Filter = new GZipStream(response.Filter, compress);
            response.AppendHeader("Content-Encoding", "gzip");
        }
        else if (acceptEncoding.ToLower().Contains("deflate"))
        {
            response.Filter = new DeflateStream(response.Filter, compress);
            response.AppendHeader("Content-Encoding", "deflate");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我从本书获得了代码:Pro ASP.NET MVC V2 Framework(.NET中的专家语音).

现在我有一个这样的动作方法:

[OutputCache(Order=1, Duration=300,VaryByParam="*", VaryByContentEncoding="gzip; deflate")]
[EnableCompression(Order=0)]
public ActionResult About()
{
    return View();
}
Run Code Online (Sandbox Code Playgroud)

如何确保OutputCache过滤器缓存压缩内容?使用像这个例子中的"Order"参数就足够了吗?

我怎样才能看到缓存中发生了什么? …

outputcache http-compression action-filter asp.net-mvc-3

6
推荐指数
1
解决办法
3423
查看次数

IIS将MVC中的静态文件理解为动态内容

使用httpCompression我重新认识到IIS将MVC中的静态文件理解为动态内容,因此即使勾选" 启用静态内容压缩 ",但不勾选" 启用动态内容压缩 ",IIS也会返回没有压缩的文件.css和.js文件:

GET /MVCX/Content/Site.css HTTP/1.1
Host: localhost
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2
Accept: text/css,*/*;
Referer: http://localhost/mvcx/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

HTTP/1.1 200 OK
Content-Type: text/css
Last-Modified: Mon, 05 Dec 2011 12:42:37 GMT
Accept-Ranges: bytes
ETag: "c79895e4bb3cc1:0"
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Date: Mon, 05 Dec 2011 12:44:43 GMT
Content-Length: 1005
Run Code Online (Sandbox Code Playgroud)

但是,如果我勾选" 启用动态内容压缩 ",文件将被压缩:

GET /MVCX/Content/Site.css HTTP/1.1
Host: localhost
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc iis-7 http-compression iis-7.5 asp.net-mvc-3

6
推荐指数
1
解决办法
3051
查看次数

如果发生异常,"Content-encoding"标头将从HttpHandler响应中消失

我有一个自定义的HttpHandler,我在其中手动启用输出压缩,如下所示:

context.Response.AppendHeader("Content-encoding", "gzip");
context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);
Run Code Online (Sandbox Code Playgroud)

这适用于大多数请求,但遇到异常时,"Content-encoding"标头会从响应中消失,而压缩过滤器仍保留在原位.结果是错误页面被gzip压缩,但是浏览器没有收到表示该事实的标题.然后浏览器尝试将仍然压缩的数据显示为文本,即gobbledygook.

完整的测试用例代码如下所示.尝试交替禁用压缩或不抛出异常.

有人可以解释为什么"内容编码"标题消失了吗?

我想我可以简单地启用压缩作为处理程序的最后一件事,因此如果遇到异常,它永远不会到达添加压缩过滤器的点; 但我看到的行为让我感到害怕.谁能确认一下?

public class TestHandler : IHttpHandler 
{
    public void ProcessRequest(HttpContext context)
    {
        CompressResponse(context);
        context.Response.Write("Hello world");

        // Throw an exception for testing purposes
        throw new Exception("Just testing...");
    }

    private void CompressResponse(HttpContext context)
    {
        string acceptEncoding = context.Request.Headers["Accept-Encoding"];
        if (String.IsNullOrEmpty(acceptEncoding))
        {
            return;
        }

        // gzip or wildcard
        if (acceptEncoding.ToLower().Contains("gzip") || acceptEncoding.Contains("*"))
        {
            context.Response.AppendHeader("Content-encoding", "gzip");
            context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);
            return;
        }

        // Also handles deflate (not …
Run Code Online (Sandbox Code Playgroud)

c# asp.net httphandler http-compression http-headers

6
推荐指数
1
解决办法
2889
查看次数

压缩Undertow服务器响应

我有一个程序化的Undertow服务器设置.静态内容也由Undertow提供,没有反向代理.Undertow启动的Java代码如下所示:

ResourceManager resourceManager = 
    new FileResourceManager(new File("deploymentDir"), 100);

DeploymentInfo servletBuilder = Servlets.deployment()
      .setResourceManager(resourceManager)
      .setDeploymentName("testDeployment")
      .setContextPath("/");

DeploymentManager manager = Servlets.defaultContainer()
      .addDeployment(servletBuilder);
manager.deploy();

Undertow.Builder builder = Undertow.builder();
builder.addHttpListener(8080, domainName);

PathHandler path = Handlers.path(Handlers.redirect("/"))
      .addPrefixPath("/", manager.start());

Undertow server = builder.setHandler(path).build();
server.start();
Run Code Online (Sandbox Code Playgroud)

我想知道一个gzip服务器如何在Undertow中响应?

谢谢,Vitaliy.

java http-compression undertow

6
推荐指数
1
解决办法
2587
查看次数