2010-06-24 93 views
0

我有一個從CDN加載圖像的網站。我需要檢查CDN上是否存在100張圖像。快速檢查遠程服務器上是否存在圖像的方法

我使用此代碼來實現這一目標:

Protected Function RemoteImageExists(ByVal Path As String) As Boolean 

    Dim httpRequest As HttpWebRequest = CType(WebRequest.Create(Path), HttpWebRequest) 

    httpRequest.Method = "HEAD" 

    Try 

     Dim httpResponse As HttpWebResponse = CType(httpRequest.GetResponse, HttpWebResponse) 

    Catch ex As Exception 
     Return False 'Undesirable flow, but seems unavoidable :(
    End Try 

    Return True 

End Function 

這仍然很慢,而且許多請求暫停。有沒有更快的方法來做到這一點?

+0

我有一個愚蠢的問題:您使用的CDN是否允許爲動態內容提供服務? (如果是的話,更快的方法是在CDN上託管服務,返回可用圖像列表)。 – 2010-06-24 18:58:15

+0

您需要多久運行一次此檢查?何時/何地被稱爲?你可以檢查300/400等級的響應等,以使其更加智能化。 – GalacticCowboy 2010-06-24 19:00:23

+0

我剛剛意識到有些事情是錯的 - 設置一個斷點表明每個請求都需要幾分鐘的時間!有些事情嚴重搞砸了! 我正在通過管理員進行此操作,因此速度並不是一個很大的因素 - 但目前頁面的速率可笑地很低,現在似乎是出於某種其他原因。 – 2010-06-24 19:02:49

回答

0

幾點建議:

  1. 如果CDN可以提供動態內容,託管在CDN服務將提供圖像的列表將在性能方面的最佳方法。

  2. 圖像在同一個目錄下嗎?如果是,則配置CDN以顯示可用文件列表,並查詢此列表。解析HTML是一件很醜陋的事情,但由於這些HTML文件的格式有一天不會有意想不到的變化,所以它可以被接受。

  3. 如果前兩個不可能,請根據具體情況使用Parallel擴展名(它可能使事情變得更快或更慢)。

  4. 異常緩慢。擺脫他們。直接使用套接字可能會有所幫助(即使它很醜陋)。

順便說一句,找到瓶頸可能有助於找到更好的解決方案。例如,如果瓶頸是處理器能力,並行擴展可能會有所幫助,但是如果是帶寬或CDN性能,它只會減慢一切。請注意,瓶頸可能是本地計算機,本地連接,整體連接或CDN。

+0

找到了一個解決方案 - CDN(Rackspace)有一個我可以用來獲取文件列表的API。感謝您的建議! – 2010-06-24 19:31:35

相關問題