gpt4 book ai didi

asp.net - 压缩不起作用

转载 作者:可可西里 更新时间:2023-11-01 15:26:57 26 4
gpt4 key购买 nike

我需要压缩我的数据导出站点的所有动态内容。
我尝试了很多方法,没有任何效果。 Chrome 显示内容未压缩且“Content-Encoding” header 不存在。

尝试这样做作为最后的手段(在写任何回复之前):

        context.Response.Filter = new DeflateStream(context.Response.Filter, CompressionMode.Compress);
context.Response.AppendHeader("Content-Encoding", "deflate");

日志显示此代码已正确执行。但是,Chrome 再次显示内容未压缩。

UPD 在使用 IIS 内置压缩时,它似乎有效并且请求跟踪显示“DYNAMIC_COMPRESSION_SUCCESS”。但是,IE 仍然显示响应未压缩。当我使用本地主机名从服务器本身请求页面时也是如此。

有什么想法吗?

最佳答案

如果您想手动执行此操作,请先检查是否支持压缩,

public static bool IsGZipSupported()
{
string AcceptEncoding = HttpContext.Current.Request.Headers["Accept-Encoding"];
if (!string.IsNullOrEmpty(AcceptEncoding) &&
(AcceptEncoding.Contains("gzip") || AcceptEncoding.Contains("deflate")))
return true;
return false;
}

并压缩你的回复,

public static void GZipEncodePage()
{
if (IsGZipSupported()) {
HttpResponse Response = HttpContext.Current.Response;

string AcceptEncoding = HttpContext.Current.Request.Headers("Accept-Encoding");
if (AcceptEncoding.Contains("gzip")) {
Response.Filter = new System.IO.Compression.GZipStream(Response.Filter, System.IO.Compression.CompressionMode.Compress);
Response.AppendHeader("Content-Encoding", "gzip");
} else {
Response.Filter = new System.IO.Compression.DeflateStream(Response.Filter, System.IO.Compression.CompressionMode.Compress);


Response.AppendHeader("Content-Encoding", "deflate");
}

您可以在将 header 发送到客户端之前检查是否附加了过滤器

protected void Application_PreSendRequestHeaders()
{
HttpResponse response = HttpContext.Current.Response;
if (response.Filter is GZipStream && response.Headers["Content-encoding"] != "gzip")
response.AppendHeader("Content-encoding", "gzip");
else if (response.Filter is DeflateStream && response.Headers["Content-encoding"] != "deflate")
response.AppendHeader("Content-encoding", "deflate");
}

有关更多信息,请查看此帖子;

关于asp.net - 压缩不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11150680/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com