我有一個小型jQuery程序,它實現了具有淡化效果的圖像幻燈片。當圖像被渲染並且下一個圖像被顯示時,它首先被加載到背景中,然後被渲染。加載圖像的代碼如下:無法使用jQuery加載瀏覽器緩存中的圖像
var img = $('<img/>');
img.attr('src', imageUrl);
img.load(function()
{
$(photo).attr('loaded' + mediaSize, true)
.attr('width', this.width)
.attr('height', this.height);
renderPhoto(photo, mediaSize);
});
呈現在renderPhoto(照片中的相關部分)是:
$("#image" + activeContainer).css({ "background-image" : "url(" + imageUrl + ")" });
還有用於跟蹤加載的圖像,並不會重新控制 - 讀取它們兩次,假設已經被加載,它們在瀏覽器緩存中。
一切工作正常,但緩存。每當呈現圖像時(使用上面的最新代碼行),它總是從服務器重新加載,破壞淡入效果。
服務器返回的頭似乎確定緩存:
% curl -o /tmp/x -v http://stoppingdown.net/media/stillimages/20100102-0072/1280/image.jpg
* About to connect() to stoppingdown.net port 80 (#0)
* Trying 78.46.194.117... % Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0connected
* Connected to stoppingdown.net (78.46.194.117) port 80 (#0)
> GET /media/stillimages/20100102-0072/1280/image.jpg HTTP/1.1
> User-Agent: curl/7.21.4 (universal-apple-darwin11.0) libcurl/7.21.4 OpenSSL/0.9.8r zlib/1.2.5
> Host: stoppingdown.net
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Sun, 04 Nov 2012 11:52:08 GMT
< X-NorthernWind-Version: 1.1-ALPHA-19
< Content-Type: image/jpeg
< Content-Length: 2207579
< Last-Modified: Thu, 01 Nov 2012 00:08:11 CET
< ETag: "1351724891000"
< Expires: Sun, 11 Nov 2012 12:52:08 CET
< Server: Jetty(6.1.24)
<
{ [data not shown]
調試與Chrome和尋找資源窗格中,我可以看到相同的圖像的多個條目,在每一輪重新加載(例如,在第一輪我看到20031227-0085.jpg,當幻燈片開始第二個週期時,我看到兩個20031227-0085.jpg,然後是三個,依此類推)。肯定資源沒有加載到瀏覽器緩存中......我不明白爲什麼。
謝謝。
PS完整代碼可用here。
當緩存中的圖像加載沒有被觸發時,檢查.complete屬性如果圖像 –
您還可以添加類似''?rand ='。Math.random()'到'imageUrl' –
啊哈哈,重讀問題,圖像不正確,大聲笑 –