簡體   English   中英

ASP.NET ASHX處理程序,用於測試未正確延遲的預加載器(帶有映像和延遲)

[英]ASP.NET ASHX Handler for testing preloaders (with an image and delay) not delaying correctly

我正在我的個人網站上工作,並且有一個畫廊需要在其中安裝預加載器。 為了進行測試,我決定制作自己的.ashx處理程序以測試圖像加載(使用簡單的Thread.Sleep()來模擬網絡延遲),但是Firefox在加載完成時不會一一顯示它們,而是一次全部顯示。 這很奇怪,因為要顯示圖像的地方沒有表格,只有div,所以它們應該即時顯示。

但是,在隨機情況下,它顯示3個,然后顯示另外2個(假設我有5張圖像)。 我希望它們以隨機間隔加載,但是我不知道我的代碼中可能有什么問題。

這是我的.ashx代碼:

<%@ WebHandler Language="C#" Class="GetImg" %>
using System.IO;
using System.Web;
using System.Text;

public class GetImg : IHttpHandler
{
    public bool IsReusable { get { return true; } }

    public void ProcessRequest(HttpContext ctx)
    {
        System.Threading.Thread.Sleep(new System.Random((int)System.DateTime.Now.Ticks).Next(5) * 1000);
        ctx.Response.ContentType = "image/jpg";
        ctx.Response.BinaryWrite(File.ReadAllBytes(HttpContext.Current.Server.MapPath("~/test.jpg")));
    }
}

在此先感謝您提供的所有幫助:)

您的瀏覽器開始並行下載圖像; 沒有理由等待第一個圖像請求第二個圖像!

您的網絡服務器也為每個請求啟動一個會話(和一個線程)。 因此,兩個會話都在同一秒開始,並一起等待5 * 1000 ...並同時發送響應。

您可以想到一些技巧:
-在服務器中實現隊列(使用Context.Application使線程彼此通信),以便可以按順序提供圖像
-使用隨機數代替System.DateTime.Now.Ticks具有隨機延遲

但實際行為是模擬服務器在延遲時間相同的情況下提供的許多圖像的真實情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM