11 messaggi dal 21 giugno 2010
Ciao a tutti.
Ho tre server IIS in shared configuration. Sto provando ad impostare l'expiration time per alcune cartelle.
Ho seguito questa procedura:
http://technet.microsoft.com/en-us/library/cc770661%28WS.10%29.aspx
dal punto 1. al punto 5.
Ho verificato che le modifiche fossero propagate a tutti e tre i server. Ma dopo qualche minuto le nuove impostazioni non erano più presenti in alcuno dei server.
Esiste un modo per applicare/confermare le modifiche?
Come posso impostare gli HTTP Expires Response Header dal file di configurazione .config?
5.610 messaggi dal 09 febbraio 2002
Contributi
Ciao, non ho esperienza diretta della shared configuration ma, correggimi se sbaglio, ciò che viene condiviso tra i server sono "solo" le impostazioni scritte nell'applicationHost.config, ovvero i settaggi globali del server che imposti dalla console di IIS, selezionando il nome della macchina dal menu ad albero a sinistra.

Invece, le impostazioni particolari del singolo sito o della singola cartella, vengono scritte da IIS direttamente su file web.config contenuti nelle cartelle fisiche del sito.

alberto.decaro ha scritto:

Sto provando ad impostare l'expiration time per alcune cartelle.


In questo caso, se ho capito bene la procedura che stai seguendo, verrà creato da IIS un file web.config in ciascuna cartella. Lo puoi verificare subito: dopo aver settato l'expire time, da IIS fai tasto destro sulla cartella e poi "Esplora". Dovresti trovare un file web.config con un contenuto simile a questo:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <httpProtocol>
            <customHeaders>
                <add name="Expires" value="Fri, 21 Dec 2012 00:00:00 GMT" />
            </customHeaders>
        </httpProtocol>
    </system.webServer>
</configuration>


Fai attenzione perché durante la ripubblicazione del sito potresti sovrascrivere o perdere i settaggi che hai fatto manualmente dalla console di IIS.

alberto.decaro ha scritto:

Come posso impostare gli HTTP Expires Response Header dal file di configurazione .config?


Esatto, questa potrebbe essere la soluzione. Dal tuo PC di sviluppo, con Visual Studio crea un file web.config nella cartella in cui intendi settare l'intestazione Expires, e poi ci incolli dentro il contenuto xml postato qui sopra.

In alternativa, se non gradissi avere vari file web.config sparsi in giro per le cartelle dell'applicazione, potresti fare tutto dal web.config principale che si trova nella root del tuo progetto. Da lì infatti aggiungeresti tanti nodi <location path="nomecartella"> al cui interno incolli lo stesso codice (incolla il nodo <system.webServer> e tutti i suoi discendenti).

ciao,
Modificato da BrightSoul il 08 dicembre 2011 14.09 -

- So what you're saying is, if we get in trouble, there's no one to help us out?
- I'm afraid not.
- Fantastic!
11 messaggi dal 21 giugno 2010
Ciao a tutti.
Ho seguito il consiglio di BrightSoul, impostando direttamente il web.config nelle cartelle che mi interessavano, ed ora l'header viene correttamente impostato.
Tuttavia, da firebug, non riscontro alcun miglioramento delle prestazioni:
GET x.gif 304 Not Modified 16ms

Expires  Tue, 01 Jan 2013 00:00:00 GMT
Last-Modified  Wed, 08 Nov 2006 08:01:12 GMT


Ad esempio l'immagine x.gif ha expiration time header correttamente impostato all'1 gennaio 2013, ma viene caricata in 16ms, che sono gli stessi tempi che avevo prima di metterla in cache.

Da cosa dipende?

Alberto
5.610 messaggi dal 09 febbraio 2002
Contributi
Ciao,
quando aggiorni la pagina, anche se il browser ha messo in cache l'immagine x.gif, esso effettua comunque una richiesta al server per quella risorsa. I 16 millisecondi che stai riscontrando rappresentano il tempo trascorso tra l'inizio della richiesta e la risposta del server. La risposta "304 Not Modified" indica al browser che il file non è cambiato dall'ultima volta e che quindi il browser è libero di riutilizzare la versione che ha in cache.

Il contenuto binario di x.gif quindi NON è stato ritrasferito dal server e il meccanismo di caching sta funzionando correttamente.

Se non ottieni alcun miglioramento è perché x.gif è probabilmente un'immagine molto piccola o perché stai utilizzando una connessione molto veloce (sei in rete locale?).
In pratica stai osservando che il tempo necessario ad ottenere una risposta dal server è superiore a quello che serve a trasferire l'intero contenuto di x.gif. Tante piccole immagini come x.gif causeranno tante connessioni al server e, conseguentemente, tante attese da 16 millisecondi prima di ottenere una risposta.

E' per questo motivo che oggi i web designer utilizzano gli sprites, ovvero un'unica immagine gif o png che contiene al suo interno tante iconcine affiancate. Vedi per esempio questo di Google o questo di Facebook. Così, con una sola richiesta e grazie all'utilizzo dei CSS, puoi pagare il "costo" di connessione al server una volta sola.

La stessa cosa si usa fare anche con vari file javascript e css, condensando dinamicamente il loro contenuto in un solo file .js o .css. Se ti interessa anche questo tipo di ottimizzazione puoi dare un'occhiata a Combres che è una libreria per .NET che serve a appunto per combinare, minificare e comprimere questo tipo di file.

Comunque, tornando all'argomento: per apprezzare l'effettivo funzionamento della cache dovresti fare un'esperimento con un'immagine jpg abbastanza grande, diciamo pesante un paio di megabytes. Data la dimensione dell'immagine, al primo caricamento dovrai attendere qualche secondo ma al successivo aggiornamento di pagina la vedrai apparire subito (o quasi).

Da Firebug, nel riquadro "Net", se poggi il mouse sopra la barretta colorata vedrai apparire un tooltip che ti darà informazioni più precise sui tempi. In particolare presta attenzione alle porzioni di colore viola (il tempo di attesa prima che inizi la risposta) e al grigio (tempo impiegato a trasferire i dati).

ciao
Modificato da BrightSoul il 15 dicembre 2011 20.59 -

- So what you're saying is, if we get in trouble, there's no one to help us out?
- I'm afraid not.
- Fantastic!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC