Cache all avatar responses

* Cache for 30 minutes
* Also cache when avatar can't be found

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
This commit is contained in:
Roeland Jago Douma 2016-11-30 08:38:13 +01:00
parent 41dcceeb35
commit 5c602f3217
No known key found for this signature in database
GPG Key ID: F941078878347C0C
1 changed files with 10 additions and 16 deletions

View File

@ -133,16 +133,6 @@ class AvatarController extends Controller {
$resp = new FileDisplayResponse($avatar,
Http::STATUS_OK,
['Content-Type' => $avatar->getMimeType()]);
// Let cache this!
$resp->addHeader('Pragma', 'public');
// Cache for 15 minutes
$resp->cacheFor(900);
$expires = new \DateTime();
$expires->setTimestamp($this->timeFactory->getTime());
$expires->add(new \DateInterval('PT15M'));
$resp->addHeader('Expires', $expires->format(\DateTime::RFC2822));
} catch (NotFoundException $e) {
$user = $this->userManager->get($userId);
$resp = new JSONResponse([
@ -150,20 +140,24 @@ class AvatarController extends Controller {
'displayname' => $user->getDisplayName(),
],
]);
// Don't cache this
$resp->cacheFor(0);
$resp->setLastModified(new \DateTime('now', new \DateTimeZone('GMT')));
} catch (\Exception $e) {
$resp = new JSONResponse([
'data' => [
'displayname' => '',
],
]);
// Don't cache this
$resp->cacheFor(0);
$resp->setLastModified(new \DateTime('now', new \DateTimeZone('GMT')));
}
// Let cache this!
$resp->addHeader('Pragma', 'public');
// Cache for 30 minutes
$resp->cacheFor(1800);
$expires = new \DateTime();
$expires->setTimestamp($this->timeFactory->getTime());
$expires->add(new \DateInterval('PT30M'));
$resp->addHeader('Expires', $expires->format(\DateTime::RFC1123));
return $resp;
}