0

有没有人能够确定,如何停止 jQuery 缓存它抓取的图像,并一次又一次地显示相同的图像?

基本上,图像每 5 秒重新上传一次,因为它充当网络摄像头(如果您检查图像右下角的时间戳,您可以判断它是否已更新)

http://colorednoise.co.uk/scripts/index.htm

谢谢

(对不起,我忘了点击粘贴代码)

$(function(){
$(document).ready(function() {
    var imgs = ['http://www.ramseycommunityradio.co.uk/images/webcam.jpg', 'http://www.ramseycommunityradio.co.uk/images/webcam.jpg']
    $("#webcam").attr('src', imgs[1]);
    var refreshId = setInterval(function() {
        $("#webcam").fadeOut("slow", function() {
            var $el = $(this);
            $el.attr('src', $.inArray($el.attr('src'), imgs) === 0 ? imgs[1] : imgs[0]);
            $el.fadeIn("slow");
        });
    }, 2000);
});
4

3 回答 3

5

您可以尝试将更改的查询字符串附加到 URL,如果这确实是您的问题,这应该停止缓存。我在这里看到了用时间戳完成的:how to generate and append a random string using jquery

因此,每次生成图像时,您都会执行以下操作:

var qs = (new Date).getTime();
var url = 'http://www.example.com/images/myimage.jpg?' + qs;
$(el).attr('src',url);
于 2012-12-14T12:59:16.793 回答
2

你的代码:

var imgs = ['http://www.ramseycommunityradio.co.uk/images/webcam.jpg', 'http://www.ramseycommunityradio.co.uk/images/webcam.jpg']
    $("#webcam").attr('src', imgs[1]);
    var refreshId = setInterval(function() {
        $("#webcam").fadeOut("slow", function() {
            var $el = $(this);
            $el.attr('src', $.inArray($el.attr('src'), imgs) === 0 ? imgs[1] : imgs[0]); 
// this condition is redundant, it will ultimately give the same result always
// because imgs[0]==imgs[1]

            $el.fadeIn("slow");
        });
    }, 2000);

就 JQuery 而言,您没有更改 SRC 属性(JQuery 对图像的内容一无所知)。尝试在服务器端使用两个不同webcam0.jpg的名称,例如andwebcam1.jpg并在它们之间交替使用。

于 2012-12-14T13:01:04.410 回答
1

一个技巧是不附加一个随机查询字符串 URL,这会导致图像从服务器重新加载。代码可能类似于:

setInterval(function() {
    var img = $("#img").get(0);
    img.src = img.src.replace(/\?.*/, "") + "?" + Math.random();
}, 5000);
于 2012-12-14T13:03:13.197 回答