diff options
| -rw-r--r-- | globals.lisp | 4 | ||||
| -rwxr-xr-x | journal.lisp | 2 | ||||
| -rw-r--r-- | main.lisp | 2 | ||||
| -rw-r--r-- | mulk-journal.asd | 2 | ||||
| -rw-r--r-- | utils.lisp | 10 | 
5 files changed, 19 insertions, 1 deletions
| diff --git a/globals.lisp b/globals.lisp index a609e63..1637931 100644 --- a/globals.lisp +++ b/globals.lisp @@ -76,3 +76,7 @@    "Warnings that should be displayed to the user.")  (defparameter *full-entry-view* t) + +(defparameter *site-root* nil) +(defparameter *if-modified-since* nil) + diff --git a/journal.lisp b/journal.lisp index cfac6fd..f1fd5b1 100755 --- a/journal.lisp +++ b/journal.lisp @@ -346,6 +346,7 @@    ;;    ;; (http-add-header "Last-Modified" (http-timestamp (compute-journal-last-modified-date)))    (http-add-header "Content-Language" "de") +  (http-add-header "Cache-Control" "public")    (http-send-headers "text/html; charset=UTF-8")    (<xhtml :xmlns "http://www.w3.org/1999/xhtml" @@ -409,6 +410,7 @@  (defun show-web-journal ()    #.(locally-enable-sql-reader-syntax) +  (revalidate-cache-or-die)    (with-web-journal ((if (member *action* '(:view :edit :preview :post-comment                                              :save-entry))                           (title-of (find-entry *post-number*)) @@ -54,6 +54,8 @@                                        (*post-number*                      :view)                                        (t                                  nil))))           (*method*          (keywordify (gethash "REQUEST_METHOD" *http-env*))) +         (*if-modified-since* #+clisp (ext:getenv "HTTP_IF_MODIFIED_SINCE") +                              #-clisp nil)           (*script-filename* (pathname-as-file                               (or (gethash "SCRIPT_FILENAME" *http-env*)                                   "/home/mulk/Dokumente/Projekte/Mulkblog/journal.cgi"))) diff --git a/mulk-journal.asd b/mulk-journal.asd index 6cd1da5..49a1e12 100644 --- a/mulk-journal.asd +++ b/mulk-journal.asd @@ -26,7 +26,7 @@    :depends-on  (#:cl-ppcre #:cl-fad #:iterate #:cl-markdown #:parenscript                  #:yaclml #:lisp-cgi-utils #:alexandria #:xml-emitter                  #:split-sequence #:clsql #:clsql-uffi #:clsql-sqlite3 -                #:drakma) +                #:drakma #:cybertiggyr-time)    :components  ((:file "defpackage")                  (:file "macros")                  (:file "globals") @@ -325,3 +325,13 @@ ELEMENT-TYPE as the stream's."                  (submitter-user-agent comment)                  (spamp comment)                  (body-of comment)))) + +(defun revalidate-cache-or-die () +  #+clisp +    (let ((time (cybertiggyr-time:parse-time *if-modified-since*))) +      (when (and (integerp time) (>= *if-modified-since* (compute-journal-last-modified-date))) +        (http-add-header "Status: 304 Not Modified") +        (http-send-headers) +        (ext:quit 0))) +  #-clisp +    nil) | 
