2010-06-01 16 views
6

Ho una semplice pagina di aspx. Ecco la parte superiore di esso: -Perché utilizzare ASP.NET OutputCache continua a restituire un 200 OK, non un 304 non modificato?

<%@ Page 
    Language="C#" 
    AutoEventWireup="true" 
    CodeFile="Foo.aspx.cs" 
    Inherits="Foo" %> 
<%@ OutputCache Duration="3600" VaryByParam="none" Location="Any" %> 

Ora, ogni volta che mi ha colpito la pagina in Firefox (o premere F5 o colpire inserire nella barra degli url) Continuo a ricevere una risposta 200 OK. Ecco una risposta del campione da Firebug: -

intestazioni di richiesta: -

intestazioni
GET /sitemap.xml HTTP/1.1 
Host: localhost.foo.com.au 
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2) 
      Gecko/20100115 Firefox/3.6 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: en-au,en-gb;q=0.7,en;q=0.3 
Accept-Encoding: gzip,deflate 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Keep-Alive: 115 
Connection: keep-alive 
Cookie: <snipped> 
If-Modified-Since: Tue, 01 Jun 2010 07:35:17 GMT 
If-None-Match: "" 
Cache-Control: max-age=0 

Risposta: -

scheda
HTTP/1.1 200 OK 
Cache-Control: public 
Content-Type: text/xml; charset=utf-8 
Expires: Tue, 01 Jun 2010 08:35:17 GMT 
Last-Modified: Tue, 01 Jun 2010 07:35:17 GMT 
Etag: "" 
Server: Microsoft-IIS/7.5 
X-Powered-By: UrlRewriter.NET 2.0.0 
X-AspNet-Version: 4.0.30319 
Date: Tue, 01 Jun 2010 07:35:20 GMT 
Content-Length: 775 

Firebug cache: -

Last Modified Tue Jun 01 2010 17:35:20 GMT+1000 (AUS Eastern Standard Time) 
Last Fetched Tue Jun 01 2010 17:35:20 GMT+1000 (AUS Eastern Standard Time) 
Expires Tue Jun 01 2010 18:35:17 GMT+1000 (AUS Eastern Standard Time) 
Data Size 775 
Fetch Count 105 
Device disk 

Ora, se io provalo in Fiddler usando il Generatore di richieste (e nessun dato extra) Continuo a ricevere la stessa risposta OK 200.

intestazioni di richiesta: -

GET http://localhost.foo.com.au/sitemap.xml HTTP/1.1 
User-Agent: Fiddler 
Host: foo.com.au 

risposta intestazioni: -

HTTP/1.1 200 OK 
Cache-Control: public 
Content-Type: text/xml; charset=utf-8 
Expires: Tue, 01 Jun 2010 07:58:00 GMT 
Last-Modified: Tue, 01 Jun 2010 06:58:00 GMT 
ETag: "" 
Server: Microsoft-IIS/7.5 
X-Powered-By: UrlRewriter.NET 2.0.0 
X-AspNet-Version: 4.0.30319 
Date: Tue, 01 Jun 2010 06:59:16 GMT 
Content-Length: 775 

Sembra che sta chiedendo di memorizzare nella cache, ma non è :(

Server è un IIS7.5 localhost su Win7. (come elencato nei dati di risposta)

Qualcuno può vedere cosa sto facendo male?

+0

È possibile che si verifichi la causa della riscrittura dell'URL. Prova ad accedere alla pagina tramite il percorso ~ .aspx, se è ok, quindi il motivo è il modulo urlRewriter. –

+0

@ Pure.Krome ha mai trovato una spiegazione/soluzione per questo? –

+0

@ GabyakaG.Petrioli no. mai avuto un aswer per questo. –

risposta

0

Provare a eseguire il sito Web da un computer diverso per garantire che questo non sia il comportamento delle chiamate localhost.

+0

Sempre ottenendo la stessa cosa. tutti i 200 –

2

Penso che dovresti impostare VaryByParam="" invece "none" per ottenere il expected 304 (non modificato quando l'utente usa il tasto invio nella barra url).

L'utilizzo di "" Vary HttpHeader è non inviato al server come parte delle intestazioni della richiesta.

L'utilizzo di "None" Vary HttpHeaderè inviato al server come parte delle intestazioni della richiesta.

Problemi correlati