Frage

Wie kann ich ETags in ASP.NET MVC unterstützen?

War es hilfreich?

Lösung

@Elijah Glover Antwort ist ein Teil der Antwort, aber nicht wirklich abgeschlossen. Dadurch wird den ETag gesetzt, aber sie sind nicht die Vorteile von ETags bekommen, ohne es auf der Server-Seite zu überprüfen. Sie tun das, mit:

var requestedETag = Request.Headers["If-None-Match"];
if (requestedETag == eTagOfContentToBeReturned)
        return new HttpStatusCodeResult(HttpStatusCode.NotModified);

Auch ist ein weiterer Tipp, dass Sie die Cache-Fähigkeit der Antwort setzen müssen, sonst standardmäßig es ist „privates“ und der ETag wird nicht in der Antwort gesetzt werden:

Response.Cache.SetCacheability(HttpCacheability.ServerAndPrivate);

So ein vollständiges Beispiel:

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
}

Andere Tipps

ETAG ist in MVC sind die gleichen wie WebForms oder Httphandlers.

Sie müssen einen Weg der ETAG Wert zu schaffen, der beste Weg, die ich gefunden habe ist mit einem Datei-MD5 oder ShortGuid .

Da .net eine Zeichenfolge als ETAG akzeptiert, können Sie es leicht gesetzt mit

String etag = GetETagValue(); //e.g. "00amyWGct0y_ze4lIsj2Mw"
Response.Cache.SetETag(etag);

Video von MIX, am Ende die sie verwenden ETAG die mit REST

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top