Frage

Es scheint ein Problem zu geben, wie PHP Engine identische Dateien umgeht, die sich nur in ihrer Dateierweiterung unterscheiden.

Problem: "Eine bedingte Anforderung in ifmodified-since hat den vollständigen Inhalt unverändert zurückgegeben."

Außerdem habe ich gemessen, dass die .Php -Erweiterung viel schneller lädt als mit der .xxx -Erweiterung identifizieren, obwohl der Dateiinhalt identisch ist und sie nur in ihrer Dateierweiterung unterscheiden.

alt text

alt text

"Mit HTTP können Kunden bedingte Anfragen stellen, um festzustellen, ob eine Kopie, die sie halten Dies und festgestellt, dass die Ressource eine vollständige Antwort sendet, obwohl sie sich nicht geändert hat, was darauf hinweist, dass sie keine Last-modifizierte Validierung unterstützt. "


Homepage endet mit .php

alt text


exakt gleiche Datei, aber enden .ast

alt text


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ören Sie sich das Php.ini an, bei dem die Frische auf 3 Stunden eingestellt ist.

AddType application/x-httpd-php .php .ast .abc .xxx .etc

<IfModule mod_headers.c>
    ExpiresActive On
    ExpiresDefault M2419200
    Header unset ETag
    FileETag None
    Header unset Pragma
    Header set Cache-Control "max-age=2419200"

    ##### DYNAMIC PAGES
    <FilesMatch "\\.(ast|php|abc|xxx)$">
        ExpiresDefault M7200
        Header set Cache-Control "public, max-age=7200"
    </FilesMatch>
</IfModule>

Soweit so gut und alles lädt, außer dass die Nicht-Php-Datei nicht richtig zwischenspeichert oder es gut kann, aber nicht gut validiert, um genauer zu sein. Siehe Bilder eingeschlossen. Nur die Nicht-Php-Dateierweiterung verursacht den Fehler und lädt langsamer.

Die gesamte Seite.php lädt schneller wie alle Elemente dort und lädt dann ordnungsgemäß vom Cache, während die Seite.abc die vollständige Anforderung zurückgegeben hat, während sie zwischengespeichert werden sollte, was bedeutet, dass die gesamte Seite langsamer ist.

Fazit: Was sollte geändert werden, um die bedingte Anforderung der IF-modifizierten, die gesamte Inhalt unverändert zurückzugeben?

War es hilfreich?

Lösung

Es scheint, als hätte Ihr Server Probleme, zu bestimmen, wie die Erweiterung dekodiert werden soll, da er nicht .php ist. Selbst wenn Sie die Erweiterung definiert haben, die in Ihrem HTTPACES als PHP erkannt werden soll, müssen einige zusätzliche Schritte für den Server erforderlich sind, um die Seite zu verarbeiten, dh es dauert immer länger, dann verwenden Sie nur .PHP (obwohl es nur wenige MS -Differenz sein sollte, wenn sie nur wenige MS -Differenz haben sollte Es ist höchstwahrscheinlich ein Serverproblem, dass dies viel länger dauert). Warum verwenden Sie nicht einfach die .php -Erweiterung auf Ihren Seiten? Warum brauchst du .ABC? Es ist immer am besten, nur die Standardverlängerung zu verwenden, anstatt sie zu maskieren.

Bearbeiten: Stellen Sie diese Funktion oben auf jeder Seite fest, sie erkennt, welcher Domänenname sich der Benutzer befindet, streifen Sie die Erweiterung der WWW und der Domänen aus und zeigen dann Inhalt nur für diesen bestimmten Domänennamen an. Sie können die gleiche .php -Datei für jeden Domänennamen verwenden und müssen keine funkigen Erweiterungen durchführen.

<?php
$domain = explode(".", $_SERVER['SERVER_NAME']);
if ($domain[2]) {
    $domainName = $domain[1];
}
else {
    $domainName = $domain[0];
}

if ($domainName = "YourDomainNameWithNoExtension") {
    echo "Welcome to $domainName";
}
?>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top