aboutsummaryrefslogtreecommitdiff
path: root/Timeline
diff options
context:
space:
mode:
Diffstat (limited to 'Timeline')
-rw-r--r--Timeline/Controllers/UserAvatarController.cs12
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)