From b969488ac6f787bf30020473bdce409d66607a43 Mon Sep 17 00:00:00 2001 From: Vincent Riquer Date: Sun, 1 Feb 2015 22:19:48 +0100 Subject: [PATCH] Implement 304 Not Modified --- add.html | 7 +++---- import | 8 ++++---- index | 25 ++++++++----------------- lib/send_headers | 22 ++++++++++++++++++++++ 4 files changed, 37 insertions(+), 25 deletions(-) create mode 100644 lib/send_headers diff --git a/add.html b/add.html index 43e80b9..b9aa549 100755 --- a/add.html +++ b/add.html @@ -24,11 +24,10 @@ do done read_query_string +send_headers <<-EOHead + content-type: text/xml +EOHead cat <<-EOHTML -content-type: text/xml -Last-Modified: $(LC_ALL=C TZ=GMT date +'%a, %d %b %Y %X %Z') -Expires: $(LC_ALL=C TZ=GMT date +'%a, %d %b %Y %X %Z') - diff --git a/import b/import index 209b126..8d498f8 100755 --- a/import +++ b/import @@ -88,11 +88,11 @@ then echo $'\nCache cleared!' fi else - cat <<-EOHTML - content-type: text/xml - Last-Modified: $(LC_ALL=C TZ=GMT date +'%a, %d %b %Y %X %Z') - Expires: $(LC_ALL=C TZ=GMT date +'%a, %d %b %Y %X %Z') + send_headers <<-EOHead + content-type: text/xml + EOHead + cat <<-EOHTML diff --git a/index b/index index 6569ee5..7a40db2 100755 --- a/index +++ b/index @@ -39,6 +39,11 @@ read_query_string if [ -z "$graph" ] then + send_headers <<-EOHead + content-type: application/xhtml+xml + refresh: 300 + EOHead + readlast medals get_current_level @@ -54,14 +59,6 @@ then title="IngRRD - $webuser [L$curlevel] - Overview" fi cat <<-EOHTML - content-type: application/xhtml+xml - Last-Modified: $( - LC_ALL=C TZ=GMT date +'%a, %d %b %Y %X %Z' \ - -d @$(rrdtool last ingress.rrd) - ) - Expires: $(LC_ALL=C TZ=GMT date +'%a, %d %b %Y %X %Z' -d '1 hour') - refresh: 10 - @@ -479,17 +476,11 @@ then EOHTML else - now=$(date +%s) - cat <<-EOHEAD + send_headers <<-EOHead content-type: image/png - Last-Modified: $( - LC_ALL=C TZ=GMT date +'%a, %d %b %Y %X %Z' \ - -d @$(rrdtool last ingress.rrd) - ) - Expires: $(LC_ALL=C TZ=GMT date +'%a, %d %b %Y %X %Z' -d '1 hour') - - EOHEAD + EOHead + now=$(date +%s) if [[ $graph == AP ]] then thresholds=( diff --git a/lib/send_headers b/lib/send_headers new file mode 100644 index 0000000..e092b71 --- /dev/null +++ b/lib/send_headers @@ -0,0 +1,22 @@ +#!/bin/bash + +send_headers() { + local timestamp do_exit header thisdate expiredate + read timestamp < <(stat -c %Y $0 "$rrdfile" lib/* |sort -r) + thisdate=$(LC_ALL=C TZ=GMT date +'%a, %d %b %Y %X %Z' -d @$timestamp) + expiredate=$(LC_ALL=C TZ=GMT date +'%a, %d %b %Y %X %Z' -d '+1 minute') + if [[ $thisdate == $HTTP_IF_MODIFIED_SINCE ]] + then + echo "Status: 304 Not Modified" + do_exit=1 + fi + echo "Last-Modified: $thisdate" + echo "Expires: $expiredate" + echo "Cache-Control: must-revalidate, max-age=60" + while read header + do + echo "$header" + done + echo + (( do_exit )) && exit +}