Is JQuery caching image?

Ik heb problemen met een functie om een ​​afbeelding te laden. Afbeelding wordt alleen de eerste keer geladen, daarna krijg ik dezelfde afbeelding. Alleen de eerste keer gaat naar photoHandler.ashx. Wat gebeurt hier? is jQuery caching van de afbeelding? Hoe te doen om altijd de juiste afbeelding te laden ?. Dit is mijn functie:

 function getObjectFromServer()
{
var hUrl = "myHandler.ashx";
var data = {};
var data.queryStringKey = "theKey";
 $.post(hUrl, data, function(response){
    if(response.length>0)
    {
        var myObj = jQuery.parseJSON(response);
        var $photo = $("").load(function(){
          $("#photo-container").append($photo);
          $photo.fadeIn('slow');
        }).attr('src', myObj.photoSrc);
        //myObj.photoSrc contains: photoHandler.ashx?photoId=anUniqueIdentifier
    }
 });
}

Edit: If I go to the element with firebug i can see the correct 'anUniqueIdentifier'. MyHandler.ashx always is called. i'm having problems with photoHandler.ashx. I added random but it does not works for me:

var randomQS = "&Id=" + Math.round(new Date().getTime()/1000);
//...
$photo.fadeIn('slow');
}).attr('src', myObj.photoSrc + randomQS);

Update:

Ik heb het opgelost, het probleem is PhotoHandler.ashx, deze controller caching de afbeelding, waardoor het toevoegen van willekeurige waarde aan de URL niet werkt.

Bedankt.

2
Het is in ieder geval de browser, en niet jQuery, die caching is.
toegevoegd de auteur Matt Ball, de bron

3 antwoord

Uw browser caching de afbeelding die u nodig hebt om de cache te verbreken door er een willekeurige string aan toe te voegen:

http://domain.com/myimage.jpg?random=12893128971844

You can use something like JS math fn: Math.random()

3
toegevoegd

Voeg een tijdstempel toe aan het einde van de URL. Zet var theTime in je functie en voeg een ? en theTime toe aan je url.

var theTime = Math.round(new Date().getTime()/1000);

var hUrl = "myHandler.ashx?"+theTime;
2
toegevoegd

Voeg een tijdstempel toe aan de afbeeldingsbron:

...

var $photo = $("").load(function(){
    $("#photo-container").append($photo);
    $photo.fadeIn('slow');
}).attr('src', myObj.photoSrc + Math.round(new Date().getTime()/1000));

...

0
toegevoegd