diff options
author | 杨宇千 <crupest@outlook.com> | 2019-08-27 12:43:19 +0800 |
---|---|---|
committer | 杨宇千 <crupest@outlook.com> | 2019-08-27 12:43:19 +0800 |
commit | 99120ebedea6b8a9400901886a3f828d3466633b (patch) | |
tree | 6045b54448d7e0a8a472f28f8e64fc8c059bc097 /Timeline | |
parent | a7ecdfb52c1d0406cec55e8dcee13f5fc0d52b8f (diff) | |
download | timeline-99120ebedea6b8a9400901886a3f828d3466633b.tar.gz timeline-99120ebedea6b8a9400901886a3f828d3466633b.tar.bz2 timeline-99120ebedea6b8a9400901886a3f828d3466633b.zip |
Add Cache-Control and ETag headers for 304 to satisfy standards.
Diffstat (limited to 'Timeline')
-rw-r--r-- | Timeline/Controllers/UserAvatarController.cs | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/Timeline/Controllers/UserAvatarController.cs b/Timeline/Controllers/UserAvatarController.cs index bbfad6af..d072bff2 100644 --- a/Timeline/Controllers/UserAvatarController.cs +++ b/Timeline/Controllers/UserAvatarController.cs @@ -64,9 +64,13 @@ namespace Timeline.Controllers public async Task<IActionResult> Get([FromRoute] string username)
{
const string IfNonMatchHeaderKey = "If-None-Match";
+ const string CacheControlHeaderKey = "Cache-Control";
+ const string CacheControlHeaderValue = "no-cache, must-revalidate, max-age=1";
+
try
{
- var eTag = new EntityTagHeaderValue($"\"{await _service.GetAvatarETag(username)}\"");
+ var eTagValue = $"\"{await _service.GetAvatarETag(username)}\"";
+ var eTag = new EntityTagHeaderValue(eTagValue);
if (Request.Headers.TryGetValue(IfNonMatchHeaderKey, out var value))
{
@@ -74,13 +78,17 @@ namespace Timeline.Controllers return BadRequest(CommonResponse.BadIfNonMatch());
if (eTagList.First(e => e.Equals(eTag)) != null)
+ {
+ Response.Headers.Add(CacheControlHeaderKey, CacheControlHeaderValue);
+ Response.Headers.Add("ETag", eTagValue);
return StatusCode(StatusCodes.Status304NotModified);
+ }
}
var avatarInfo = await _service.GetAvatar(username);
var avatar = avatarInfo.Avatar;
- Response.Headers.Add("Cache-Control", "no-cache, must-revalidate, max-age=1");
+ Response.Headers.Add(CacheControlHeaderKey, CacheControlHeaderValue);
return File(avatar.Data, avatar.Type, new DateTimeOffset(avatarInfo.LastModified), eTag);
}
catch (UserNotExistException e)
|