Während ich hier gerade massiv in die AJAX- und jQuery-Welt abtauche, stosse ich bei der gesteigerten Komplexität meiner Applikationen vermehrt auf kaum reproduzierbare Caching-Probleme. Besonders bei komplett interaktiven Elementen (mehrere AJAX-Elemente einer Webseite, die bei Aktion geändert oder gesteuert werden), ergeben sich zuweilen lustige Cache-Artefakte. Mit Firebug kommt man dem Problem, aber nicht der Ursache auf die Schliche. Auch der Indianer ist nach entsprechender Um-Konfiguration nicht in der Lage, diesen Makel aufzulösen. Seltsamerweise scheint der Browser/Client selbst zu entscheiden, wann er auf den Cache zugreift und wann nicht, auch wenn ich ihn explizit (nach allen Regeln der Kunst) anweise, das nicht zu tun.
Die Lösung ist denkbar einfach (“Doh”-einfach – das hätte ich selbst wissen können, hmpf). Der Mitautor eines meiner liebsten AJAX-Bücher weiss Rat: Bei der Abfrage an einen bestimmten AJAX-Handler wird einfach eine zufällig generierte Zahl als GET-Parameter angehangen. Update: Dirk weist darauf hin, das mein vormalig verwendetes Date() nicht zufällig genug ist, ich habe deshalb den Code noch einmal angepasst (Danke ;). Für jQuery kann das so aussehen:$('#pawn').load ( "ajax-myajaxhandler.php?d="+Math.random() * 100000, { param: "param" }, function () { reloadUI(elem1,elem2,elem3); });Klappt prima :) Any comments?
-
Letzte Artikel
Letzte Kommentare
- salome bei Snow Leopard und Apache, PHP und MySQL
- Chris bei PHP Code Sniffer und Mess Detector in Netbeans 7.0 integrieren
- Chris bei PHP Code Sniffer und Mess Detector in Netbeans 7.0 integrieren
- Chris bei PHP Code Sniffer und Mess Detector in Netbeans 7.0 integrieren
- Oliver bei PHP Code Sniffer und Mess Detector in Netbeans 7.0 integrieren
Archive
- Mai 2011
- April 2011
- September 2010
- Juni 2010
- Mai 2010
- Februar 2010
- Dezember 2009
- September 2009
- Juni 2009
- Mai 2009
- April 2009
- Februar 2009
- Januar 2009
- August 2008
- Juli 2008
- April 2008
- März 2008
- Februar 2008
- Januar 2008
- Dezember 2007
- November 2007
- Oktober 2007
- Juli 2007
- Mai 2007
- April 2007
- März 2007
- Februar 2007
- Dezember 2006
- Oktober 2006
- September 2006
- August 2006
- Juli 2006
- Mai 2006
- April 2006
- März 2006
- Februar 2006
- Januar 2006
- November 2005
- Oktober 2005
- September 2005
- August 2005
- Juli 2005
- Juni 2005
- Mai 2005
- April 2005
- März 2005
- Februar 2005
- Januar 2005
- Dezember 2004
- November 2004
- Oktober 2004
- September 2004
- August 2004
- Juli 2004
- Juni 2004
- Mai 2004
- April 2004
- März 2004
Kategorien
Meta
Date() ist nicht zufällig genug :-) Nimm besserMath.random() * 100000
Wenn Date, dann eher new Date().getTime(), aber Math.random() ist wohl noch zuverlässiger (auch wenn ich Date für ausreichend halte – man wird wohl nicht in derselben Mikrosekunde dieselbe Ressource zweimal abrufen).
Vielen Dank für das Feedback. Ich denke auch, Math.random() sollte ausreichen. Ich habe den Artikel noch einmal überarbeitet.
Vielen Dank – hat mein Problem gelöst! War allerdings bei mir nur im Opera, aber ich habe noch eine relativ einfache Ajax Seite.Timo