From 1894c5cc9aa711e9c5e3016ea7623a860589899f Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Fri, 4 Apr 2025 12:34:41 +0300 Subject: [PATCH] blank avatar cache --- application/Espo/EntryPoints/Avatar.php | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/application/Espo/EntryPoints/Avatar.php b/application/Espo/EntryPoints/Avatar.php index 0037723018..6afcb21ffc 100644 --- a/application/Espo/EntryPoints/Avatar.php +++ b/application/Espo/EntryPoints/Avatar.php @@ -132,7 +132,7 @@ class Avatar extends Image $user = $this->entityManager->getRDBRepositoryByClass(User::class)->getById( $userId); if (!$user) { - $this->renderBlank($response); + $this->renderBlank($request, $response); return; } @@ -156,7 +156,7 @@ class Avatar extends Image $sizes = $this->getSizes()[$size]; if (empty($sizes)) { - $this->renderBlank($response); + $this->renderBlank($request, $response); return; } @@ -202,8 +202,14 @@ class Avatar extends Image /** * @throws Error */ - private function renderBlank(Response $response): void + private function renderBlank(Request $request, Response $response): void { + $etag = 'blank'; + + if ($this->processEtagMatch($request, $response, $etag)) { + return; + } + ob_start(); $img = imagecreatetruecolor(14, 14); @@ -236,6 +242,8 @@ class Avatar extends Image $response ->setHeader('Content-Type', 'image/png') + ->setHeader('Cache-Control', 'max-age=600, stale-while-revalidate=864000') + ->setHeader('Etag', $etag) ->writeBody($contents); }