Warum unterscheidet PHP zwischen .php und .abc Erweiterungen für das Caching?

9

Es scheint ein Problem zu geben, wie die PHP-Engine mit identischen Dateien umgehen kann, die sich nur in ihrer Dateierweiterung unterscheiden.

Problem: "Eine bedingte Anforderung" If-Modified-Since "hat den gesamten Inhalt unverändert zurückgegeben."

Außerdem habe ich gemessen, dass die Erweiterung .php viel schneller lädt als identitcal twin mit der Erweiterung .xxx, obwohl der Dateiinhalt identisch ist und sich nur in der Dateiendung unterscheidet.

  

"HTTP ermöglicht Clients zu machen   bedingte Anfragen, um zu sehen, ob eine Kopie   dass sie halten, ist immer noch gültig. Schon seit   Diese Antwort hat eine Last-Modified   Kopfzeile sollten Clients in der Lage sein zu verwenden   einen If-Modified-Since-Anfragekopf   zur Validierung. RED hat das getan und   festgestellt, dass die Ressource einen vollständigen sendet   Antwort, obwohl es nicht war   geändert, um anzuzeigen, dass dies nicht der Fall ist   Unterstützung der zuletzt geänderten Validierung. "

Homepage endet mit .php

genau dieselbe Datei, aber endend .ast

Gegeben:

Eine home.php-Datei wird als home.xxx kopiert und diese Erweiterung wird zu htaccess hinzugefügt, um sie als PHP-Datei zu erkennen. Die .php-Datei hört auf die php.ini, wo Frische auf 3 Stunden eingestellt ist, die Nicht-.php-Dateien müssen auf htaccess hören, wo Frische auf 2 Stunden eingestellt ist, gemäß:

%Vor%

So weit, so gut und alles lädt, außer dass die Nicht-PHP-Datei nicht richtig zwischenspeichert oder gut zwischenspeichert, aber nicht gut validiert, um genauer zu sein. Siehe beigefügte Bilder. Nur die Nicht-PHP-Dateierweiterung verursacht den Fehler und lädt langsamer.

Die gesamte page.php wird schneller geladen, da alle Elemente dort korrekt aus dem Cache geladen werden, während page.abc die vollständige Anforderung zurückgibt, während sie zwischengespeichert werden sollte, was bedeutet, dass die gesamte Seite langsamer ist.

>

Untere Zeile: Was sollte geändert werden, um die bedingte If-Modified-Since-Anforderung zu beseitigen, die den gesamten Inhalt unverändert zurückgibt?

    
Sam 21.12.2010, 19:16
quelle

1 Antwort

2

Es scheint, als hätte Ihr Server Probleme beim Dekodieren der Erweiterung, da es nicht .php ist. Selbst wenn Sie die Erweiterung so definiert haben, dass sie in Ihrem HTTP-Speicher als php erkannt wird, benötigt der Server noch einige zusätzliche Schritte, um die Seite zu verarbeiten, was bedeutet, dass sie immer länger dauert als nur .php (obwohl es nur ein paar Millisekunden Unterschied sein sollte) Wahrscheinlich verursacht ein Serverproblem viel länger). Warum nicht einfach die Erweiterung .php auf deinen Seiten verwenden? Warum brauchst du .abc? Es ist immer am besten, nur die Standard-Erweiterung zu verwenden, anstatt sie zu maskieren.

BEARBEITEN: Wenn Sie diese Funktion oben auf jeder Seite platzieren, wird der Domänenname des Benutzers erkannt. Entfernen Sie die WWW- und Domänenerweiterung, und zeigen Sie dann nur den Inhalt für diesen bestimmten Domänennamen an. Sie können die gleiche .php-Datei für jeden Domain-Namen verwenden und müssen keine funky Erweiterungen machen.

%Vor%     
Kyle 21.12.2010, 20:40
quelle