Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iis 如何使用Web.config链接HTTP压缩和缓存?_Iis_Web Config_Http Headers_Plesk_Http Compression - Fatal编程技术网

Iis 如何使用Web.config链接HTTP压缩和缓存?

Iis 如何使用Web.config链接HTTP压缩和缓存?,iis,web-config,http-headers,plesk,http-compression,Iis,Web Config,Http Headers,Plesk,Http Compression,我已经用microhosting.in购买了共享主机。在为我的初创公司整合网站后,下一步自然是推广。所以我检查了性能。Pagespeed测试指出缓存和未压缩的http存在问题。现在,通过Plesk托管Windows意味着对于任何IIS功能要求,我必须明确说服托管提供商,除非使用Web.config即可。技术团队有能力尝试使用http启用公共缓存之类的事情,因为代理缓存可能会抑制元标记内容嗅探,应该更可取。是否有任何自定义实现可以与Web.config结合使用,就像我在任何地方找到使用.htacc

我已经用microhosting.in购买了共享主机。在为我的初创公司整合网站后,下一步自然是推广。所以我检查了性能。Pagespeed测试指出缓存和未压缩的http存在问题。现在,通过Plesk托管Windows意味着对于任何IIS功能要求,我必须明确说服托管提供商,除非使用Web.config即可。技术团队有能力尝试使用http启用公共缓存之类的事情,因为代理缓存可能会抑制元标记内容嗅探,应该更可取。是否有任何自定义实现可以与Web.config结合使用,就像我在任何地方找到使用.htaccess的解决方案一样?

将可选内容压缩在单独的文件夹中,并使用其自己的Web.config强制将与内容编码相关的属性添加到标题中。对于强制内容,重命名文件以使用asp.net runtime和place->将ContentType替换为预期的MIME类型,将其嵌套在某些标记中,因为在服务器端xsl转换期间,将其放置在最外层或未注释的默认位置会引起不安。现在在global.asax中实现以下C逻辑

 void Application_PreRequestHandlerExecute(object sender, EventArgs e)
 {
     HttpApplication app = sender as HttpApplication;
    string acceptEncoding = app.Request.Headers["Accept-Encoding"];
    Stream prevUncompressedStream = app.Response.Filter;

    if (acceptEncoding == null || acceptEncoding.Length == 0)
        return;

    acceptEncoding = acceptEncoding.ToLower();

    if (acceptEncoding.Contains("gzip"))
    {
        // gzip
        app.Response.Filter = new GZipStream(prevUncompressedStream,
            CompressionMode.Compress);
        app.Response.AppendHeader("Content-Encoding", "gzip");
    }       /*else if (acceptEncoding.Contains("deflate") || acceptEncoding == "*")
    {
        // defalte
        app.Response.Filter = new DeflateStream(prevUncompressedStream,
            CompressionMode.Compress);
        app.Response.AppendHeader("Content-Encoding", "deflate");
    }*/    // Only cache for X seconds.
Response.Cache.SetExpires(DateTime.Now.AddMonths(9));
Response.Cache.SetMaxAge(new TimeSpan(270, 0, 0,0,0));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetValidUntilExpires(true);

// Sliding expiration means we reset the X seconds after each request.
// SetETag is required to work around one aspect of sliding expiration.
Response.Cache.SetSlidingExpiration(true);
Response.Cache.SetETagFromFileDependencies();

}