Beim zweiten (und folgenden) Mal erreiche ich den Endpunkt mit derselben Instanz des Browsers Ich erhalte ein HTTP 200 OK (vom Festplatten-Cache) – es stellt nie die eigentliche Anfrage an meinen Localhost-Server.
Hier ist der Netzwerkverkehr der 2x Anfragen:
Anfrage 1:

Anfrage 2 (die es aus dem Festplatten-Cache holt)
I dachte, dass, wenn die erste Anfrage ein ETag zurückgibt, der Browser „intelligent genug“ ist, um nachfolgende Anfragen mit dem ETag + „If-None-Match“-Anfrageheader durchzuführen?
Dies ist der Code, der die Datei generiert hat
Code: Select all
var etag = new EntityTagHeaderValue($"\"{invoicePdfVersion}-{lastModifiedOn.Ticks}\"");
return TypedResults.File(
pdfData, // byte array of pdf data
"application/pdf", // content type
"testing", // filename
false, // enable range processing
lastModifiedOn, // DateTime when the file was last updated/modified
etag); // etag value
Code: Select all
context.Response.Headers.CacheControl = "no-cache";
Ich habe einen serverseitigen Code, der den ETag überprüft:
Code: Select all
if (context.Request.Headers.TryGetValue(HeaderNames.IfNoneMatch, out var ifNoneMatch) &&
ifNoneMatch == etag.ToString())
{
return TypedResults.StatusCode(304); // HTTP NotModified.
}
Was kann ich als nächstes versuchen?