2013-10-23 45 views
2

我正在實時共享圖片網站。它可以讓全世界的用戶一起看照片並發表評論,並且可以實時查看誰在看什麼。Angular:在Firefox中使用img ng-src時緩存圖片似乎損壞

我曾經使用jQuery DOM操作(插入<img>標籤)根據用戶點擊的內容顯示不同的圖像,最近用ng-src指令用Angular控制器替換了這個表示邏輯。

邏輯整體工作,但我注意到,在Firefox,角,使每一次我改變了NG-SRC值的GET請求,當我想到的是圖像的瀏覽器緩存。

如果你去這裏:http://dev14-www.photozzap.com/conference/j4bxpt3n,然後打開Firebug/Net視圖,並在兩張照片之間來回切換,你會發現它會對圖像發出GET請求,即使這些圖像應該在緩存中。

的影響是,用戶將看到他們的照片,它實際上顯示時間點擊時間之間有些滯後。

在Chrome,開發者/淨視圖清楚地示出該圖像是從緩存中來回切換圖像之間時拉動。

可我的代碼進行修復,使圖像能夠在Firefox緩存或者是有一個角度的問題呢? Chrome似乎在做正確的事情。

回答

1

我在Firefox 24,我可以證實,該請求實際上由每一個我的照片之間切換的時間,但......你可以通過調查此類請求的詳情參見服務器響應與304未修改,所以圖像數據本身不會一遍又一遍地傳輸,因此性能不會受到太大影響。

儘管Firefox的緩存中存儲的圖像,它使一個請求,以檢查是否圖像已經改變,在看到它只是顯示文件的本地版本304響應。

+0

我又看了一遍。看起來像剛剛推出的Firefox 24,可以正確使用緩存中的圖像。如果我的Firefox已經啓動了幾個小時,那麼每次我在照片之間切換時,突然開始發出GET請求。 – Luc

+0

我已經試驗了更多,發現如果我使用Firebug,Firefox的緩存有時會以意想不到的方式運行(請求GET對象,我期望緩存)。我意識到Firebug中的Net面板有一個「禁用瀏覽器緩存」選項,但有時出現意外的行爲甚至無法啓用此選項。如果我使用Firebug從未激活的新啓動的Firefox會話,我會看到適當的緩存行爲。 – Luc

+0

我也注意到了這種行爲,但如果初始請求返回304,我只得到304,並且它不考慮任何max-age或Expires標頭。如果初始請求是200,則它將繼續獲得200響應,因爲它在隨後的請求中不發送和If-Modified-Since。這看起來像一個錯誤,Chrome不會這樣。如果這與螢火蟲有關,它可能不是真正的問題,將需要檢查代理日誌,以確保。 – jishi

1

這是一個螢火蟲問題。如果您使用代理檢查流量,您將看到沒有激活的螢火蟲,它不會再次請求服務器中的圖像,所以任何普通用戶都可以。