aboutsummaryrefslogtreecommitdiff
path: root/Timeline/Controllers
diff options
context:
space:
mode:
author杨宇千 <crupest@outlook.com>2019-08-19 16:12:16 +0800
committerGitHub <noreply@github.com>2019-08-19 16:12:16 +0800
commit72ab8e49929d528b7cb461ba90ad86691a3f437b (patch)
treebd8c0d70aac7cd4d1a6c28ae7c9b7c681dbd5613 /Timeline/Controllers
parent3371b473d0d055f46c9ea09fba7e0d56e7a386a5 (diff)
parent9168f07d1f35b5ba670b3c1d900f186ac868284b (diff)
downloadtimeline-72ab8e49929d528b7cb461ba90ad86691a3f437b.tar.gz
timeline-72ab8e49929d528b7cb461ba90ad86691a3f437b.tar.bz2
timeline-72ab8e49929d528b7cb461ba90ad86691a3f437b.zip
Merge pull request #45 from crupest/avatar-cache
Add 304 response for If-Modified-Since in avatar.
Diffstat (limited to 'Timeline/Controllers')
-rw-r--r--Timeline/Controllers/UserAvatarController.cs16
1 files changed, 14 insertions, 2 deletions
diff --git a/Timeline/Controllers/UserAvatarController.cs b/Timeline/Controllers/UserAvatarController.cs
index 710ca764..89d2650c 100644
--- a/Timeline/Controllers/UserAvatarController.cs
+++ b/Timeline/Controllers/UserAvatarController.cs
@@ -57,10 +57,22 @@ namespace Timeline.Controllers
[Authorize]
public async Task<IActionResult> Get(string username)
{
+ const string IfModifiedSinceHeaderKey = "If-Modified-Since";
try
{
- var avatar = await _service.GetAvatar(username);
- return File(avatar.Data, avatar.Type);
+ var avatarInfo = await _service.GetAvatar(username);
+ var avatar = avatarInfo.Avatar;
+ if (Request.Headers.TryGetValue(IfModifiedSinceHeaderKey, out var value))
+ {
+ var t = DateTime.Parse(value);
+ if (t > avatarInfo.LastModified)
+ {
+ Response.Headers.Add(IfModifiedSinceHeaderKey, avatarInfo.LastModified.ToString("r"));
+ return StatusCode(StatusCodes.Status304NotModified);
+ }
+ }
+
+ return File(avatar.Data, avatar.Type, new DateTimeOffset(avatarInfo.LastModified), null);
}
catch (UserNotExistException e)
{