0
我在这方面花了不少时间,但似乎无处可去。我有一个很大的页面,我真的想加快速度。显而易见的地方似乎是HTTP压缩,但我似乎无法让它为我工作。有没有人有HTTP压缩使用ASP.NET?
经过大量搜索后,我尝试了下面代码的几种变体。它有点作品,但刷新浏览器后,结果似乎崩溃了。当页面使用缓存时,他们转向垃圾。如果我关闭缓存,那么页面看起来是正确的,但我失去了我的CSS格式(存储在一个单独的文件),并得到一个错误,包含的JS文件包含无效字符。
我在网上找到的大部分资源要么很旧,要么专注于直接访问IIS。我的页面正在共享主机帐户上运行,并且我无法直接访问正在运行的IIS7。
protected void Application_BeginRequest(object sender, EventArgs e)
{
// Implement HTTP compression
if (Request["HTTP_X_MICROSOFTAJAX"] == null) // Avoid compressing AJAX calls
{
// Retrieve accepted encodings
string encodings = Request.Headers.Get("Accept-Encoding");
if (encodings != null)
{
// Verify support for or gzip (deflate takes preference)
encodings = encodings.ToLower();
if (encodings.Contains("gzip") || encodings == "*")
{
Response.Filter = new GZipStream(Response.Filter,
CompressionMode.Compress);
Response.AppendHeader("Content-Encoding", "gzip");
Response.Cache.VaryByHeaders["Accept-encoding"] = true;
}
else if (encodings.Contains("deflate"))
{
Response.Filter = new DeflateStream(Response.Filter,
CompressionMode.Compress);
Response.AppendHeader("Content-Encoding", "deflate");
Response.Cache.VaryByHeaders["Accept-encoding"] = true;
}
}
}
}
有没有人有这个更好的成功?
这是否也在Application_BeginRequest()? – 2010-12-21 06:51:32
可悲的是,我只在一个ASP.Net项目上工作过,而且这是.ashx IHttpHandler的一个东西,如果你愿意,它可以让整个响应主体成为一个字符串。我不知道它是如何在普通的.aspx页面中完成的。我工作过的所有其他C#都是Win32的东西。如果ASP.Net具有某种输出缓冲机制,那么这个代码会在它被刷新之前对待它......无论它在哪里。对不起,我不能更具体! – 2010-12-22 11:50:46