【问题标题】:call aspx page to return an image randomly slow调用aspx页面随机返回图片慢
【发布时间】:2012-03-30 10:46:45
【问题描述】:

好的,问题来了,我有一个asp.net网站,里面有个叫GetThumbnail.aspx的aspx页面,代码如下:

string newThumbnailPath = ReaderUtilities.GetThumbnailPath(ptiId, highQuality ? ZoomLevel.L : ZoomLevel.S);
Response.Clear();
if (File.Exists(newThumbnailPath))
{
  Response.ContentType = "image/jpg";
  Response.TransmitFile(newThumbnailPath);
}

就是这样。新的 newThumbnailPath 是网络共享路径,通常像 D:\ImagesCache\000\0001\000123\000123456\000123456-sml-1.jpg

然后在我的网站里有一个searchResult.aspx,当用户输入一些关键字搜索时,我会显示searchresult.aspx页面,在searchResult.aspx里面,我会显示10张图片,代码如下:

<img rel="429746" src="/GetThumbnail.aspx?p=429746" class="cover-img draggable">

好的,问题是,每次在生产服务器上,一定有几张图片加载很慢,比如平均 1 秒内加载 8 张图片,但加载 2 张图片需要 7 或 9 秒。所有的图片都很小,不用resize,我用firebug Net查了一下,加载慢的图片的DNS查找,Connecting和Sending都差不多1ms,Receiving是200或者300ms,但是Waiting需要8或 9 秒。

我以为是因为 IO,但为什么大多数图像都很快,只是一些随机的,任何帮助。我真的很感激。

【问题讨论】:

    标签: asp.net performance image


    【解决方案1】:

    因为你使用的是.aspx页面(而不是handler),又因为浏览器加载的图片不是一张一张的,而是很多张在一起的,我怀疑你是觉得session被锁了 页面,这就是延迟的原因。

    尝试在页面上设置EnableSessionState="false"

    例如:

    <%@ Page language="c#" Codebehind="WebForm1.aspx.cs" 
        AutoEventWireup="false" Inherits="WebApplication1.WebForm1" 
         EnableSessionState="false" %>
    

    顺便说一句,如果您将 aspx 页面更改为处理程序页面,您将获得更快的速度,因为处理程序页面不会像正常页面那样进行所有调用。

    【讨论】:

    • 嗨 Aristos,非常感谢,它确实解决了我的问题,我发现处理程序确实比普通的 aspx 页面快一点。
    • @danmiao 很高兴能帮到你:) 这是一个困难的案例。
    猜你喜欢
    • 1970-01-01
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    • 2012-11-23
    • 2013-03-20
    • 1970-01-01
    • 2014-09-04
    相关资源
    最近更新 更多