Ich habe eine kleine dynamische Site in mod_python
implementiert. Ich habe das geerbt, und während ich relativ geringfügige Änderungen an Inhalt und Logik vorgenommen habe, bin ich mit HTTP-Caching überfordert. Die Website funktioniert bereits gut, so dass diese ist nicht "die übliche Frage", wie deaktivieren Caching für eine dynamische Website.Wie erhalte ich die mod_python-Site, damit Clients ausgewählte Bildinhalte zwischenspeichern können?
Mein Problem ist, gibt es ein großes Banner Bild auf jeder Seite (das gleiche Bild von der gleichen URL auf jeder Seite), die für ~ 90% der Website Bandbreite aber die soweit ich sagen kann nicht zwischengespeichert wird; Wenn ich auf der Seite stöbere, wenn ich auf eine neue Seite (oder zurück zu einer zuvor besuchten) klicke, wird sie erneut heruntergeladen.
Wenn ich die Bild-URL Banner wget (um zu sehen, die Header) Ich sehe:
$ wget -S http://example.com/site/gif?name=banner.gif
--2012-04-04 23:02:38-- http://example.com/site/gif?name=banner.gif
Resolving example.com... 127.0.0.1
Connecting to example.com|127.0.0.1|:80... connected.
HTTP request sent, awaiting response...
HTTP/1.1 200 OK
Date: Wed, 04 Apr 2012 22:02:38 GMT
Server: Apache/2.2.14 (Ubuntu)
Content-Location: gif.py
Vary: negotiate
TCN: choice
Set-Cookie: <blah blah blah>
Connection: close
Content-Type: image/gif
Length: unspecified [image/gif]
Saving to: `gif?name=banner.gif'
und den Code, der es serviert wird, nicht viel mehr als
req.content_type = 'image/gif'
req.sendfile(fullname)
wo Vollername ist ein Dateipfad, der aus dem Namensparameter der Anfrage besteht.
Meine Frage ist: gibt es eine schnelle Lösung in Bezug auf die Einstellung eines Expires: oder Vary: -Feldes in der Anfrageantwort des Bildes, was dazu führt, dass Clients weniger daran interessiert sind, es wiederholt herunterzuladen?
Die Seite ist auf Ubuntu 10.04 gehostet und hat keine anderen Apache-Mods außer Apache als aktiviert als anders geschrieben.
Ich stelle fest, dass die meisten (nicht alle) der Header Site-Seiten selbst
Pragma: no-cache
Cache-Control: no-cache
Expires: -1
Vary: Accept-Encoding
enthalten (und die Original-Website Autor hat darüber klar gedacht als no-cache selektiv an nicht statisch angelegt wird Inhaltsseiten). Ich weiß nicht genug über das Caching, um zu wissen, ob dies irgendwie dazu führt, dass die enthaltene .gif-IMG jedes Mal neu geladen wird.
Danke, dies brachte mich auf den richtigen Weg: Ich habe fast dasselbe gemacht und einfach die Bannerbilddatei auf einen anderen Pfad auf der gleichen Domain verschoben, die dynamischen Sachen komplett vermieden und die Vorlage der einen Seite aktualisiert Hinweis darauf. Und die Seite fühlt sich sofort viel schneller an, jetzt wartet sie nicht darauf, dass das Banner auf jeder einzelnen Seite heruntergeladen wird! – timday