2010-06-10 10 views
19

Właśnie uruchomiłem aplikację Google's Page Speed na naszej stronie, a jedną z zaleceń było Wykorzystanie buforowania przeglądarki. Rozwijając ten ujawniły następujące:Pytając przeglądarki o buforowanie naszych obrazów (ASP.NET/IIS)

Poniższe zasoby w pamięci podręcznej mają całe życie krótkie świeżość: Określ upływie co najmniej jeden tydzień w przyszłość dla następujących środków:

< długa lista obrazów >
< niektóre pliki javascript >

Jak wydłużyć "okres świeżości" poszczególnych zdjęć?

To ASP.NET projekt działa na IIS7.5

+0

Nikt nie ma dobrej odpowiedzi na to? :( –

Odpowiedz

49

znalazłem odpowiedzi na moje pytanie w innym miejscu na tej stronie. Woot! (. Nie wiem, dlaczego nie pojawiają się po raz pierwszy opublikowane, ale nie szkodzi, mam tam w końcu)

Dla zainteresowanych, odpowiedź była to (jak wysłane przez Gabriel McAdams):


Robisz to w IIS. Jeśli korzystasz z IIS 7, możesz dodać nagłówek do swojego pliku web.config. Jest w sekcji system.webServer.

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

Spowoduje to wszystko statyczny aby mieć wygasa nagłówek HTTP ustawiony na rok 2020. statyczny oznacza, że ​​nic nie jest obsługiwana przez silnik ASP.NET takich jak obrazy, pliki skryptów i stylów arkuszy.

Albo użyć względnej ważności, użyj tego:

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

To spowoduje, że wszystkie treści statycznych, aby mieć wygasa nagłówek HTTP ustawiony na 2 dni.

+3

Szybkość naszej witryny wzrosła o około 400%. Huzzah! –

+0

Czy dałem ci inną odpowiedź niż ta? Konfiguracja, którą napisałem robi dokładnie to samo, a ponadto twoja odpowiedź była specyficzna dla konkretnych obrazów –

+9

Um, co? 1. Nie wyjaśniłeś niczego, właśnie wysłałeś kogoś inna odpowiedź z drugiego pytania 2. Nie wyjaśniłeś, na jaką treść wpłynęłoby, nawet gdybym specjalnie zadał pytanie Edit: Wygląda na to, że właśnie to dodałeś 3. Ustalenie daty w przyszłości nie jest pomocne w mojej sytuacji. Nie mogę uwierzyć, że odrzuciłeś moją odpowiedź, to jest niesamowicie lame, ale cokolwiek, –

3

Trzeba będzie dodać nagłówek Expires do statyczny, w tym obrazy, HTML, JS, plików CSS. Można łatwo dodać wygasa nagłówek system.webServer sekcji przy IIS7 Twojej web.config za:

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

Niestety twoja odpowiedź pozostawiła mnie oszołomioną :(Czy to wpłynie na WSZYSTKIE treści, które dostarczamy użytkownikowi? Jak określamy konkretne obrazy, tak jak pytałem w moim pytaniu? (Chociaż domyślam się, że * może * być użyteczne, aby uzyskać przeglądarka, aby cache wszystko ...) –

+0

Żałuję, że nie mogłem ci dać odpowiedzi na to przepraszam za moje ograniczenia na platformie ASP i IIS. Wiem, że istnieje plik .htaccess do tego na apache. Ale tak czy inaczej, po prostu chcesz, żeby tylko kilka z twoich obrazów zostało zbuforowanych, a nie wszystkie. Jaka to robi różnica. –

+0

Obawiam się, że nie odpowiedziałeś na moje pytanie :(Czy to wpłynie na WSZYSTKIE treści, które dostarczamy użytkownikowi? Dzięki, –

1

To, czego zwykle potrzebujesz, to buforowanie wszystkich zasobów (css, js i obrazów), plik html będzie miał çache busting links, dzięki czemu nadal będziesz mógł aktualizować obrazy.

Aby to zadziałało, pliki html nie mogą być częścią staticContent. dodanie nowego programu obsługi dla plików html uniemożliwia ich trwałe buforowanie.

<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> 
Powiązane problemy