2017-07-14 55 views
0

我正在尋找執行以下步驟來嘗試加載圖像,如果它失敗(因爲圖像不存在)創建圖像,然後加載它。我擔心的是第二次加載時,圖像將被緩存爲失敗的圖像/ URL,因此不會第二次加載。圖像加載失敗 - jquery捕獲事件並再試一次

步驟: - 嘗試加載圖像。 - 如果失敗 - jQuery捕獲事件 - ajax到php,創建圖像,移動到位。 - 然後加載圖像。 (並且所有未來的用戶都可以使用移動到位的已保存圖像)。

我試圖使用這種方法的原因是20萬用戶,只有被查看的帳戶需要圖像(可能是10%) - 因此數據較少。

有沒有更好的方式來做我在做什麼?

jQuery來檢查圖像失敗:

$("img").on("error", function(){...}); 

感謝

+0

更好的做在服務器通過php,當做出html輸出,首先嚐試加載圖像,如果沒有把默認,是一個想法 –

+0

你的意思是使用Curl檢查圖像?我想到了這一點,但它並不需要對這些頁面加載進行持續的Curl調用。 – Adam

+0

@ÁlvaroTouzón是正確的,做服務器端的工作,通過檢查圖像是否存在,如果不創建圖像,服務它! –

回答

1

我不確定我的回答是否正確,所以如果我錯了,請隨時告訴我任何人。我認爲您可以修改圖片網址以使版本結束,例如'...?v=4',如果圖片加載失敗,只需將該用戶的版本增加到'...?v=5'即可。您可以使用sessionStorage用於此目的,使用一個唯一的關鍵字來標識圖像本身,並將該值作爲計數器,以顯示圖像無法載入的次數。每次發生故障時,計數器都會遞增,或者在會話中第一次出現錯誤的情況下將計數器添加到sessionStorage。爲了實現此目的,您可能需要將該版本與用戶的服務器端版本進行同步。順便說一下,你也可以在服務器端完成這個工作,然後你就不需要版本控制了。

+0

我喜歡你的想法。我相信它會奏效 - 會測試一下 - 謝謝你花時間:)乾杯 – Adam

+0

不客氣 –