web-dev-qa-db-ja.com

ブラウザに画像をキャッシュするように依頼する(ASP.NET/IIS)

私はちょうど Googleのページ速度 アプリケーションを私たちのサイトに対して実行しました、そして推奨の1つはブラウザのキャッシュを活用するでした。これを拡張すると、次のことが明らかになりました。

次のキャッシュ可能なリソースの鮮度の有効期間は短いです。次のリソースの有効期限を少なくとも1週間先に指定してください:

<画像の長いリスト>
<いくつかのJavaScriptファイル>

特定の画像の「鮮度の寿命」を長くするにはどうすればよいですか?

これは、IIS7.5で実行されているASP.NETプロジェクトです。

19
Chuck Le Butt

私はこのサイトの他の場所で私の質問に対する答えを見つけました。うわー! (最初に投稿したときに表示されなかった理由はわかりませんが、気にしないでください。最終的にそこに到達しました。)

興味のある人にとって、答えはこれでした(投稿者 Gabriel McAdams ):


IISでそれを行います。 IIS 7を使用している場合は、web.configにヘッダーを追加できます。これはsystem.webServerセクションにあります。

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

これにより、すべての静的コンテンツの期限切れHTTPヘッダーが2020年に設定されます。静的コンテンツとは、画像、スクリプトファイル、スタイルシートなど、ASP.NETエンジンを介して提供されないものを意味します。

または、相対的な有効期限を使用するには、次を使用します。

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

これにより、すべての静的コンテンツの有効期限HTTPヘッダーが2日に設定されます。

49
Chuck Le Butt

画像、html、js、cssファイルを含む静的コンテンツにExpiresヘッダーを追加する必要があります。 IIS7を使用して、web.configのsystem.webServerセクションにexpiresヘッダーを簡単に追加できます。

 <staticContent> 
 <clientCache httpExpires = "Mon、1 May 2020 05:00:00 GMT" cacheControlMode = "UseExpires"/>
</staticContent> 
4
sushil bharwani

通常必要なのは、すべてのアセット(css、js、および画像)をキャッシュすることです。画像を更新できるように、htmlファイルには çachebustinglinks が含まれます。

これが機能するために、htmlファイルをstaticContentの一部にすることはできません。 HTMLファイルの新しいハンドラーを追加すると、それらが永続的にキャッシュされるのを防ぐことができます。

    <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>
2
Miss.Vy