2010-06-01 12 views
6

J'ai une page aspx simple. Voici le haut de celui-ci: -Pourquoi l'utilisation de ASP.NET OutputCache continue-t-elle à renvoyer un 200 OK, pas un 304 non modifié?

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

Maintenant, chaque fois que je frappe la page dans FireFox (soit appuyez sur F5 ou appuyez sur Entrée dans la barre d'URL) Je continue à obtenir une réponse 200 OK. Voici une réponse de l'échantillon de Firebug: -

têtes de demande: -

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 

têtes de réponse: -

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 onglet 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 

Maintenant, si je essayez-le dans Fiddler en utilisant le Générateur de requêtes (et sans données supplémentaires) Je continue aussi à obtenir la même réponse 200 OK.

têtes de demande: -

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

têtes de réponse: -

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 

On dirait qu'il est demandé de le mettre en cache, mais ce n'est pas :(

Server est une localhost IIS7.5 sur Win7. (comme indiqué dans les données de réponse)

Quelqu'un peut-il voir ce que je fais mal?

+0

Cela peut être la cause de la réécriture d'URL. Essayez d'accéder à la page via le chemin ~ .aspx, si c'est OK, donc la raison est le module urlRewriter. –

+0

@ Pure.Krome jamais trouvé une explication/solution pour cela? –

+0

@ GabyakaG.Petrioli non. n'a jamais eu d'aswer pour cela. –

Répondre

0

Essayez d'exécuter le site Web à partir d'un ordinateur différent pour vous assurer que ce n'est pas le comportement des appels localhost.

+0

Toujours obtenir la même chose. tous les 200 –

2

Je pense que vous devriez mettre en place VaryByParam="""none" afin d'obtenir la expected 304 (non modifié lorsque l'utilisation de l'utilisateur sur la touche Entrée dans la barre d'URL).

L'utilisation de "" Vary HttpHeader est et non envoyée au serveur comme en-tête de la demande.

L'utilisation de "None" Vary HttpHeaderest envoyée au serveur dans les en-têtes de demande.