Lieber Cybaer,
Aber ich konnte feststellen, daß dein Script zumindest an einer Stelle verbesserungswürdig ist: Mir scheint es, Du fragst ab, ob der Browser einen If-Modified-Since-Header schickt und lieferst dann einen 304er aus. Aber Du lieferst auch einen 304er aus, wenn das Datum gar nicht paßt - Hauptsache Header. =;-)
Nunja, ich war etwas zu bequem, die Zeitangabe in einen Timestamp umrechnen zu lassen, um dann sicher überprüfen zu können, ob der übertragene Timestamp veraltet, aktuell oder gar neuer ist, als der Timestamp der Daten auf dem Server. In dem Moment, wo die Timestamps _nicht_ übereinstimmen, ist das Dokument im Cache entweder veraltet, oder es hat einen ohnehin ungültigen Timestamp, und damit bekommt der Browser das komplette Dokument übermittelt.
Du solltest schon abfragen, ob die Daten auf dem Server ein *neueres* Datum tragen, als vom Client abgefragt. Wenn der Client einen "alten" Timestamp schickt, und das Script antwortet *immer* mit "OK, hast Du schon", dann erscheint mir das ein wenig übertrieben. ;->
Asche auf mein Haupt! Ich hatte eine IF-Bedingung mit "!=" anstatt mit "==" gestellt... klar, dass dabei Mist herauskommt, da sie damit genau das Gegenteil bewirkt. Mit diesem Denkfehler hat der Server nur bei übereinstimmendem Timestamp das Dokument neu ausgeliefert, bei unterschiedlichem Timestamp aber nicht, was ja gerade keinen Sinn hat. Oh, oh, oh! Habe schon eine ganz matschige Birne wegen dieser ganzen Headerei.
Liebe Grüße aus Ellwangen,
Felix Riesterer.