2009-05-25 4 views
2

Der Webserver, der meine Website hostet, gibt die zuletzt geänderten oder veralteten Header nicht zurück. Ich möchte dies korrigieren, um sicherzustellen, dass meine Webinhalte cachefähig sind.Wie konfiguriere ich Apache - das hat keine mod_expires oder mod_headers - um Ablaufköpfe zu senden?

Ich habe keinen Zugriff auf die Apache-Konfigurationsdateien, da die Site in einer freigegebenen Umgebung gehostet wird, für die ich keine Kontrolle habe. Ich kann jedoch Konfigurationen über eine .htaccess-Datei vornehmen. Der Server - Apache 1.3 - ist nicht mit mod_expires oder mod_headern konfiguriert und die Firma wird diese für mich nicht installieren.

Mit diesen Einschränkungen, was sind meine Optionen?

Entschuldigung für die Post hier. Ich bin mir bewusst, dass diese Frage nicht unbedingt eine Programmierfrage ist, sondern eher eine sys-Admin-Frage. Wenn serverfault öffentlich ist, werde ich sicherstellen, dass ich dort Fragen dieser Art stelle.

Antwort

3

Welche Art von Inhalt? Wenn sie statisch sind (HTML, Bilder, CSS), dann ist die einzige Möglichkeit, Header anzuhängen, der Front-End-Webserver. Ich bin überrascht, dass das Hosting-Unternehmen mod_headers nicht aktiviert hat, obwohl sie es möglicherweise für .htaccess nicht aktivieren. Es kostet sie mehr Bandbreite und CPU (dh Geld), um nicht zu cachen.

Wenn es sich um dynamischen Inhalt handelt, haben Sie beim Erstellen der Seite die Kontrolle. Dies hängt von Ihrer Sprache ab. hier ist ein Beispiel für PHP (es ist von dem PHP-Handbuch, und ist ein schlechtes Beispiel, wie es auch den Antwortcode gesetzt ist):

if (!headers_sent()) { 
    header('Location: http://www.example.com/'); 
    exit; 
} 

Oh, und eine Sache, über Caching-Header Einstellung: nicht setzt sie zu lange, insbesondere für CSS und Skripte. Sie denken vielleicht nicht, dass Sie diese ändern möchten, aber Sie möchten keine defekte Website, während die alten Inhalte noch in den Browsern enthalten sind. Ich empfehle maximale Cache-Einstellungen im Bereich von 4-8 Stunden: gut für die Sitzung eines einzelnen Benutzers oder einen Arbeitstag, aber nicht viel mehr.