ASP.NET Core のイメージ タグ ヘルパー
著者: Peter Kellner
イメージ タグ ヘルパーは <img>
タグを強化し、静的イメージ ファイルにキャッシュ バスティング動作を提供します。
キャッシュ バスティング文字列は、アセットの URL に追加される、静的なイメージ ファイルのハッシュを表す一意の値です。 一意の文字列は、クライアントのキャッシュからではなく、ホスト Web サーバーからイメージの再読み込みを行うよう、クライアント (および一部のプロキシ) に要求します。
イメージ ソース (src
) がホスト Web サーバー上の静的ファイルの場合:
- 一意のキャッシュ バスティング文字列は、クエリ パラメーターとしてイメージ ソースに追加されます。
- ホスト Web サーバーのファイルが変更された場合、更新された要求パラメーターを含む一意の要求 URL が確実に生成されます。
タグ ヘルパーの概要については、「ASP.NET Core のタグ ヘルパー」を参照してください。
イメージ タグ ヘルパーの属性
src
イメージ タグ ヘルパーをアクティブにするには、<img>
要素に src
属性が必要です。
イメージ ソース (src
) は、サーバー上の物理静的ファイルをポイントしている必要があります。 src
がリモート URI の場合は、キャッシュ バスティング クエリ文字列パラメーターは生成されません。
asp-append-version
asp-append-version
属性の値が true
で、src
属性も指定されている場合、イメージ タグ ヘルパーが呼び出されます。
イメージ タグ ヘルパーを使用する例を次に示します。
<img src="~/images/asplogo.png" asp-append-version="true">
静的ファイルがディレクトリ /wwwroot/images/ に存在する場合、生成された HTML は次のようになります (ハッシュは異なります)。
<img src="/images/asplogo.png?v=Kl_dqr9NVtnMdsM2MUg4qthUnWZm5T1fCEimBPWDNgM">
パラメーター v
に割り当てられた値は、ディスク上の asplogo.png
ファイルのハッシュ値です。 Web サーバーが静的ファイルに対する読み取りアクセスを取得できない場合、v
パラメーターは表示されるマークアップの src
属性に追加されません。
wwwroot
外部の静的ファイルのバージョンを生成するタグ ヘルパーについては、「複数の場所からファイルを提供する」を参照してください
ハッシュ キャッシュの動作
イメージ タグ ヘルパーはローカル Web サーバーでキャッシュ プロバイダーを使用して、特定のファイルの計算された Sha512
ハッシュを格納します。 ファイルが複数回要求された場合、ハッシュは再計算されません。 キャッシュは、ファイルの Sha512
ハッシュが計算されたときにファイルにアタッチされるファイル ウォッチャーによって無効になります。 ディスク上のファイルが変更されると、新しいハッシュが計算されてキャッシュされます。