• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Laden einer eingebundenen Navigation aus dem Cache nicht zulassen

Status
Für weitere Antworten geschlossen.

ingoS

Aktives Mitglied
EDIT: Nicht oder nur mit Abstrichen lösbar, keine Vorschläge mehr nötig, da Ursache lokales Problem, dessen Auftachen bei massenhaft vielen anderen Benutzern nicht zu erwarten ist.
Mit anderen Worten: Hat sich erledigt. :mrgreen:


Leider sind meine PHP-Kenntnisse ziemlich beschränkt; daher weiß ich nicht, ob das, was ich versuche, überhaupt so möglich ist. Wenn es nicht geht, wäre ich über Vorschläge für eine andere Lösung des Problems sehr glücklich.

Ich habe etliche php-Dateien, wobei die meisten ausschließlich die Navigation gemeinsam haben. Diese ist eine in jeder der php-Dateien per include eingebundene .html-Datei.
Schema der php-Dateien:
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
bla
</head>
<body>

*Kram, der nur auf dieser Seite steht*

<?php bla include (navi.html) etc. ?> <<*Das steht auf jeder php-Seite*

*Sonstiger Kram, der nur auf dieser Seite steht*

</body>
</html>
Diese Art des Aufbaus ist mir vorgegeben.

Das Problem ist nun folgendes:
Der Sinn des Aufbaus ist natürlich, dass die Navigation auch mal geändert werden kann, ohne dass an den ganzen php-Seiten etwas gemacht werden muss.
Wenn ich nun aber an der Navigation etwas ändere, sieht der Benutzer, der nicht zufällig seinen Cache regelmäßig leert, immer noch die alte Version der Navigation.

no-cache kenne ich (auch die PHP-Möglichkeit, die AOL und IE dazu zwingt, habe ich irgendwo schon gefunden), aber eigentlich sollen die bestehenden php-Dateien nicht alle ständig neu geladen werden müssen, weil sie auch recht groß sind.

Kann ich irgendwie dafür sorgen, dass die Navigation auf alle Fälle immer vom Server geladen wird, wenn jemand die Seite aufruft, der ganze Rest aber ruhig aus dem Cache geladen werden darf?
 
Zuletzt bearbeitet:
Werbung:
Wie waers damit:

Du generierst den Namen fuer die Navigation dynamisch, du nennst die Datei "navi" + eine zufaellige Zahlenkombination [4 Stellen solllten reichen]. Mittels .htaccess laesst du nun alle Dateien mit namen "navi" + 4 Zahlen + ".html" durch "navi.html" ersetzen.


Leider kenne ich mich nicht mit .htaccess aus, daher weiss ich nicht ob es funktioniert :eek:
 
Wie waers damit:

Du generierst den Namen fuer die Navigation dynamisch, du nennst die Datei "navi" + eine zufaellige Zahlenkombination [4 Stellen solllten reichen]. Mittels .htaccess laesst du nun alle Dateien mit namen "navi" + 4 Zahlen + ".html" durch "navi.html" ersetzen.


Leider kenne ich mich nicht mit .htaccess aus, daher weiss ich nicht ob es funktioniert :eek:
Das bringt aber nichts, weil der Name der php-Datei der gleiche bleibt. Es kommt gar nicht erst zum erneuten Includen der Navigation, stattdessen wird einfach die fertige Seite mit identischem Namen aus dem Cache geholt.
 
Werbung:
Hmm, dann bleibt wohl noch der Einsatz eines iFrames oder die benutzung von Javascript, beides nicht optimale Loesungen...
 
Hmm, dann bleibt wohl noch der Einsatz eines iFrames oder die benutzung von Javascript, beides nicht optimale Loesungen...
Kann man nicht irgendwie mit Sessions arbeiten, Cookies hinterlassen oder so etwas, also jedenfalls beim Besucher irgendwie das Datum des Besuchs der Seite speichern und bei dessen nächsten Besuch wieder auslesen, um dann gegebenenfalls nur auf der Startseite oder eben auf allen Seiten eine no-cache-Aktion durchzuführen?
 
Du koenntest in einem Cookie speichern wann die Seite das letzte mal angesurft wurde und vergleichen, ob die Navigation in der Zwischenzeit veraendert wurde. Falls ja, laesst du alles einmal neuladen und passt das Cookie an, falls nein, laesst du die Seite aus dem Cache laden.


Funktioniert dann aber nicht, wenn User auf der Seite cookies deaktiviert haben.
 
Werbung:
Mittlerweile haben mein Kollege und ich festgestellt, dass die Seite immer aus dem Cache geladen wird, wenn man auf einer anderen Seite ist und dann auf die Seite zugreift. Aktualisiert man die "Problemseite", werden die Änderungen sichtbar. Das krasseste Beispiel ist: Die index.php-Datei befindet sich gar nicht mehr auf dem Server, die gecachete Version wird aber im Browser immer noch angezeigt, wenn auf die entsprechende URL geht. Erst, wenn F5 gedrückt wird, wird der 404-Fehler ausgegeben.
Dieses Problem besteht aber nicht nur in einem Browser auf einem Rechner sondern jeweils in Firefox und Internet Explorer auf vier verschiedenen Rechnern im ganzen Haus.
 
Sorry Alex,
aber das was du vorhast, wird nicht möglich sein. Zumindest nicht so wie du es haben möchtest, da ja der Client nur die Endseite zugeschickt bekommt (und wenn er diese nun einmal aus dem Cache lädt, dann kann man daran auch nichts ändern). Du musst schlicht und einfach auf die Fähigkeiten der Browser und ihre Cache-Philosophie vertrauen.

Grüße
 
Sorry Alex,
aber das was du vorhast, wird nicht möglich sein. Zumindest nicht so wie du es haben möchtest, da ja der Client nur die Endseite zugeschickt bekommt (und wenn er diese nun einmal aus dem Cache lädt, dann kann man daran auch nichts ändern). Du musst schlicht und einfach auf die Fähigkeiten der Browser und ihre Cache-Philosophie vertrauen.

Grüße

Das habe ich mittlerweile auch eingesehen. Das Phänomen kommt, wie du schon sagtest, definitiv aufgrund des Proxys im Hause zustande und (bisher) nirgendwo sonst.
 
Werbung:
Probier dochmal
PHP:
<head>
  <meta http-equiv="expires" content="0" />
  <meta http-equiv="pragma" content="no-cache" />
</head>
 
Probier dochmal
PHP:
<head>
  <meta http-equiv="expires" content="0" />
  <meta http-equiv="pragma" content="no-cache" />
</head>

no-cache kenne ich (auch die PHP-Möglichkeit, die AOL und IE dazu zwingt, habe ich irgendwo schon gefunden), aber eigentlich sollen die bestehenden php-Dateien nicht alle ständig neu geladen werden müssen, weil sie auch recht groß sind.
schrieb ich im Startpost. ;-)
Aber es hat sich ja wie gesagt erledigt; ich editiere wohl mal...
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben