2010-06-10 18 views
19

Ich lief gerade Google's Page Speed Anwendung gegen unsere Website und eine der Empfehlungen war Nutzen Browser caching. Der Ausbau dieser ergab folgendes:Browser bitten, unsere Bilder zu cachen (ASP.NET/IIS)

Folgende zwischenspeicherbar Ressourcen haben eine kurze Frische Lebensdauer: mindestens eine Woche in die Zukunft für die folgenden Ressourcen ein Ablauf angeben:

< eine lange Liste die Bilder >
< einige Javascript-Dateien >

Wie verlängere ich die "Frische-Lebensdauer" bestimmter Bilder?

Es ist ein ASP.NET Projekt auf IIS7.5

+0

Hat jemand keine gute Antwort dafür? :( –

Antwort

49

fand ich die Antwort auf meine Frage an anderer Stelle auf dieser Website. Woot! (. Nicht sicher, warum es nicht angezeigt, wenn ich das erste geschrieben, aber das macht nichts, ich habe es am Ende)

Für Interessenten war die Antwort auf diese (wie von Gabriel McAdams geschrieben):


Sie tun das in IIS. Wenn Sie IIS 7 verwenden, können Sie die Kopfzeile in Ihrer Datei web.config hinzufügen. Es befindet sich im Abschnitt system.webServer.

<staticContent> 
    <clientCache httpExpires="Sun, 29 Mar 2020 00:00:00 GMT" cacheControlMode="UseExpires" /> 
</staticContent> 

Dadurch werden alle statischen Inhalte verursachen eine Header-HTTP haben bis zum Jahr 2020 Statische Inhalte bedeutet etwas gesetzt abläuft, die nicht durch die ASP.NET-Engine wie Bilder, Skriptdateien und Stylesheets serviert wird.

Oder einen relativen Ablauf zu verwenden, verwenden Sie diese:

<staticContent> 
    <clientCache cacheControlMaxAge ="2.00:00:00" cacheControlMode="UseMaxAge" /> 
</staticContent> 

Dadurch wird alle statischen Inhalte verursachen eine HTTP-Header zu 2 Tagen eingestellt haben abläuft.

+3

Unsere Website Geschwindigkeit nur um 400% erhöht. Huzzah! –

+0

Habe ich dir eine andere Antwort gegeben als das? Die Konfiguration, die ich geschrieben habe, macht genau dasselbe. Und deine Antwort war spezifisch für bestimmte Bilder. –

+9

Äh, was? 1. Du hast nichts erklärt, du hast gerade jemanden gepostet Die Antwort von jemand anderem aus einer anderen Frage 2. Du hast nicht erklärt, welche Inhalte betroffen wären, auch wenn ich speziell gefragt habe Edit: Sieht so aus, als hättest du das gerade hinzugefügt 3. Das Festlegen eines Datums in der Zukunft ist keine hilfreiche Lösung meine Situation. Ich kann nicht glauben, dass du meine Antwort markiert hast. Das ist unglaublich lahm. Aber was auch immer. –

3

laufen Sie hinzufügen müssen Expires-Header auf Ihre statische Inhalte wie Bilder, HTML, JS, CSS-Dateien. Sie können ganz einfach hinzufügen, die system.webServer Abschnitt mit IIS7 Header in Ihrer web.config der gültig bis:

 
<staticContent> 
    <clientCache httpExpires="Mon, 1 May 2020 05:00:00 GMT" cacheControlMode="UseExpires" /> 
</staticContent> 
+0

Leider hat mich deine Antwort verwirrt :(Wird dies ALLE Inhalte beeinflussen, die wir an den Benutzer liefern? Wie spezifizieren wir bestimmte Bilder, wie ich in meiner Frage gefragt habe? (Obwohl ich denke, dass es * nützlich sein könnte, um die Browser, um alles zwischenzuspeichern ...) –

+0

Ich wünschte, ich hätte Ihnen eine Antwort auf diese Entschuldigung für meine Einschränkungen auf ASP und IIS-Plattform geben können. Ich weiß, dass .htaccess-Datei dafür auf Apache ist. Aber warum wollen Sie nur einige Ihrer Bilder im Cache haben und nicht alle von ihnen? Welchen Unterschied macht das? –

+0

Ich fürchte, du hast meine Frage nicht beantwortet :(Wird dies ALLE Inhalte, die wir an den Benutzer liefern, bewirken? Danke. –

1

Normalerweise möchten Sie alle Assets (CSS, JS und Bilder) zwischenspeichern, die HTML-Datei wird çache busting links haben, damit Sie die Bilder noch aktualisieren können.

Damit dies funktioniert, können die HTML-Dateien nicht Teil von staticContent sein. Das Hinzufügen eines neuen Handlers für HTML-Dateien verhindert, dass sie permanent zwischengespeichert werden.

<staticContent> 
     <clientCache httpExpires="Sun, 29 Mar 2020 00:00:00 GMT" cacheControlMode="UseExpires" /> 
    </staticContent> 
    <handlers> 
     <add 
     name="HtmlHandler" 
     path="*.html" 
     verb="*" 
     type="System.Web.Handlers" 
     preCondition="integratedMode" 
     /> 
    </handlers> 
Verwandte Themen