From 6073c3611533e65c983bda5107e2387b42aed4ab Mon Sep 17 00:00:00 2001 From: tYYGH Date: Fri, 29 Jan 2016 11:35:50 +0100 Subject: [PATCH] Web etag management for pages --- web/paperweb.php | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/web/paperweb.php b/web/paperweb.php index d954ad2..12d9587 100644 --- a/web/paperweb.php +++ b/web/paperweb.php @@ -29,10 +29,16 @@ if (array_key_exists('doDownload', $_REQUEST)) { $json = exec("sudo -u {$USER} {$PATH} -M {$datearg} -p {$pagearg}"); if ($json) { $meta = json_decode($json, true); - $ext = explode('/', $meta['mime'])[1]; - header("Content-Type: {$meta['mime']}"); - header("Content-Disposition: inline; filename=\"{$date}_{$page}.{$ext}\""); - passthru("sudo -u {$USER} {$PATH} -R {$date} -p {$page}"); + $knownetag = trim(@$_SERVER['HTTP_IF_NONE_MATCH'], ' "'); + if ($meta['etag'] == $knownetag) { + header('HTTP/1.1 304 Not Modified'); + } else { + $ext = explode('/', $meta['mime'])[1]; + header("Content-Type: {$meta['mime']}"); + header("ETag: \"{$meta['etag']}\""); + header("Content-Disposition: inline; filename=\"{$date}_{$page}.{$ext}\""); + passthru("sudo -u {$USER} {$PATH} -R {$date} -p {$page}"); + } } } else { ?>