どのように私はASP.NET MVCでてETagをサポートしていますか?
-
06-09-2019 - |
質問
どのように私はASP.NET MVCでてETagをサポートしていますか?
解決
@Elijahグローバーの答えには答えの一部が、本当に完全ではありません。これはETagを設定しますが、サーバー側でそれを確認せずてETagの利益を取得していません。あなたがそれを行うます:
var requestedETag = Request.Headers["If-None-Match"];
if (requestedETag == eTagOfContentToBeReturned)
return new HttpStatusCodeResult(HttpStatusCode.NotModified);
また、別のヒントは、あなたがそれを「プライベート」だとのETagが応答して設定されることはありませんそれ以外の場合は、デフォルトでは、レスポンスのキャッシュ可能性を設定する必要があるということです。
Response.Cache.SetCacheability(HttpCacheability.ServerAndPrivate);
だから、完全な例:
public ActionResult Test304(string input)
{
var requestedETag = Request.Headers["If-None-Match"];
var responseETag = LookupEtagFromInput(input); // lookup or generate etag however you want
if (requestedETag == responseETag)
return new HttpStatusCodeResult(HttpStatusCode.NotModified);
Response.Cache.SetCacheability(HttpCacheability.ServerAndPrivate);
Response.Cache.SetETag(responseETag);
return GetResponse(input); // do whatever work you need to obtain the result
}
他のヒント
ETAGのMVCにWebフォームまたはhttpHandlersのと同じです。
あなたは、私が見つけた最良の方法は、ファイルのMD5または<のhref = "http://www.singular.co.nz/blog/archive/2007/12/を使用している、ETAG値を作成するための方法が必要です20 / shortguid--短く-と-URL-に優しい、GUIDで-C-sharp.aspx」のrel = "noreferrer"> shortGuid を。
.NETはETAGとして文字列を受け付けているので、あなたが使用して簡単に設定することができます。
String etag = GetETagValue(); //e.g. "00amyWGct0y_ze4lIsj2Mw"
Response.Cache.SetETag(etag);
彼らはETAGのRESTとを使用して最後に MIXするから動画、
所属していません StackOverflow