Domanda

Sembra che ci sia un problema tra il modo in cui PHP il motore gestisce file identici che differiscono solo nell'estensione del file.

Problema: "Una richiesta condizionale MODIFICATA IF ha restituito l'intero contenuto invariato."

Inoltre, ho misurato che l'estensione .PHP si carica molto più velocemente del gemello IdentitCal con estensione .xxx anche se il contenuto del file è identico e differiscono solo nell'estensione del file.

alt text

alt text

"HTTP consente ai clienti di effettuare richieste condizionali di vedere se una copia che detiene è ancora valida. Poiché questa risposta ha un'intestazione dell'ultima modifica, i clienti dovrebbero essere in grado di utilizzare un'intestazione della richiesta If-Modified per la convalida. Red ha fatto Questo e hanno scoperto che la risorsa invia una risposta completa anche se non è cambiata, indicando che non supporta la convalida dell'ultima modifica ".


homepage che termina con .php

alt text


esatto stesso file, ma finale .ast

alt text


Dato:

Un file home.php viene copiato come home.xxx e questa estensione viene aggiunta a htaccess per riconoscerlo come un file PHP. Il file .php ascolta Php.ini in cui la freschezza è impostata su 3 ore, i file non .PHP devono ascoltare HTAccess dove la freschezza è impostata su 2 ore secondo:

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>

Fin qui tutto bene e tutto si carica, tranne che il file non PHP non si memorizza correttamente, o fa bene la memorizzazione nella cache ma non convalida bene, per essere più specifici. Vedi le immagini allegate. Solo l'estensione del file non PHP provoca l'errore e si carica più lentamente.

L'intero Page.php si carica più velocemente poiché in qualche modo tutti gli elementi lì dentro, quindi caricano correttamente dalla cache, mentre la pagina.abc ha la richiesta completa restituita mentre deve essere memorizzata nella cache, il che significa che l'intera pagina è più lenta.

In conclusione: cosa dovrebbe essere modificato, per eliminare la richiesta condizionale IF-modificata che restituisce il contenuto completo invariato?

È stato utile?

Soluzione

Sembra che il tuo server abbia problemi a determinare come decodificare l'estensione, poiché non è .php. Anche se hai definito l'estensione per essere riconosciuta come PHP nel tuo HTTPACESS, richiede comunque alcuni passaggi extra per il server per elaborare la pagina, il che significa che ci vorrà sempre più tempo, solo usando .php (anche se dovrebbe essere solo poche differenze MS , molto probabilmente un problema del server sta facendo sì che questo richieda molto più tempo). Perché non usare solo l'estensione .PHP sulle tue pagine? Perché hai bisogno di .abc? È sempre meglio usare solo l'estensione predefinita invece di mascherarla.

EDIT: Metti questa funzione nella parte superiore di ogni pagina, rileverà quale nome di dominio si trova l'utente, spoglia l'estensione WWW e il dominio e quindi visualizzi il contenuto solo per quel nome di dominio specifico. È possibile utilizzare lo stesso file .php per ogni nome di dominio e non è necessario fare estensioni funky.

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

if ($domainName = "YourDomainNameWithNoExtension") {
    echo "Welcome to $domainName";
}
?>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top