簡體   English   中英

c#,asp.net,壓縮文件需要很長時間,瀏覽器變得無響應

[英]c#,asp.net, zipping file takes long time and browser become ir-responsive

我的網站上有圖像,用戶可以下載所選圖像。 當用戶選擇多個圖像時,文件作為zip文件下載; 壓縮過程發生在服務器上。

但是,當用戶選擇更多文件時(大小也會增加500MB),所以當他按下下載時,服務器上會開始壓縮。 網頁掛起,用戶在壓縮過程完成之前無法執行任何操作。

有時瀏覽器(如Chrome)會發出消息(進程耗時太長,會終止此進程)。 所以我在這里尋求幫助。

我需要一個堅實的建議

謝謝

我壓縮文件的代碼是:

public string Zip(string f, bool original)
{

    string zip = "";
    try
    {
        files = HttpContext.Current.Server.UrlDecode(files);
        string[] fileCollection = files.Split('*');
        zipFile = class1.zipfile(fileCollection, IsOriginal);


        int fileLength = files.Length;
    }

    catch (Exception ex)
    {
        Console.WriteLine("Exception during processing {0}", ex);


    }
    return File;

三點建議:

  1. 在客戶端上顯示一個忙碌的屏幕,讓用戶知道他正在等待文件下載。 您可以通過下載到單獨的iframe並檢查iframe的狀態來實現此目的(對於動態方法,請參閱動態創建的iframe用於下載文件觸發器onload with firebug但不是沒有
  2. 檢查你如何實際壓縮文件 - 需要壓縮還是只想將所有圖片一起下載? 沒有壓縮的壓縮通常要快得多。
  3. 如果它仍然需要太長時間 - 即使是繁忙的屏幕 - 考慮使用異步方法:用戶可以請求包含他/她所選圖像的zip文件,這會導致系統開始處理zip文件。 然后,用戶可以等待或返回專用頁面以檢查zip文件的狀態,如果已准備好,則立即從服務器下載(即從處理后放置的虛擬目錄)。 這種方法更復雜,你也要考慮清理。

我會將壓縮拆分為一個單獨的進程(BackgroundWorker進程?),然后更新一個狀態欄(AJAX),以便讓用戶知道它將花費多長時間。

暫無
暫無

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

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