diff options
Diffstat (limited to 'app/Controller/FileViewer.php')
-rw-r--r-- | app/Controller/FileViewer.php | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/app/Controller/FileViewer.php b/app/Controller/FileViewer.php index bc91c3d8..3be4ea14 100644 --- a/app/Controller/FileViewer.php +++ b/app/Controller/FileViewer.php @@ -66,9 +66,16 @@ class FileViewer extends Base */ public function image() { + $file = $this->getFile(); + $etag = md5($file['path']); + $this->response->contentType($this->helper->file->getImageMimeType($file['name'])); + $this->response->cache(5 * 86400, $etag); + + if ($this->request->getHeader('If-None-Match') === '"'.$etag.'"') { + return $this->response->status(304); + } + try { - $file = $this->getFile(); - $this->response->contentType($this->helper->file->getImageMimeType($file['name'])); $this->objectStorage->output($file['path']); } catch (ObjectStorageException $e) { $this->logger->error($e->getMessage()); @@ -82,12 +89,21 @@ class FileViewer extends Base */ public function thumbnail() { + $file = $this->getFile(); + $model = $file['model']; + $filename = $this->$model->getThumbnailPath($file['path']); + $etag = md5($filename); + + $this->response->cache(5 * 86400, $etag); $this->response->contentType('image/jpeg'); + if ($this->request->getHeader('If-None-Match') === '"'.$etag.'"') { + return $this->response->status(304); + } + try { - $file = $this->getFile(); - $model = $file['model']; - $this->objectStorage->output($this->$model->getThumbnailPath($file['path'])); + + $this->objectStorage->output($filename); } catch (ObjectStorageException $e) { $this->logger->error($e->getMessage()); |