diff options
author | Adam Chlipala <adamc@hcoop.net> | 2010-05-23 11:52:13 -0400 |
---|---|---|
committer | Adam Chlipala <adamc@hcoop.net> | 2010-05-23 11:52:13 -0400 |
commit | dabc3df3ffbea51eb70f6947e431bcf568aa44f0 (patch) | |
tree | 485b6a9c7dd4f22fc4a8bf83afabc6250376eade /src | |
parent | a89f9edc1c5718c2f6c1fcce2c131e6b4c2cced7 (diff) |
Support HTTP caching of app.js
Diffstat (limited to 'src')
-rw-r--r-- | src/c/Makefile.in | 3 | ||||
-rw-r--r-- | src/cjr_print.sml | 30 |
2 files changed, 30 insertions, 3 deletions
diff --git a/src/c/Makefile.in b/src/c/Makefile.in index 98f431f9..59d7b3e4 100644 --- a/src/c/Makefile.in +++ b/src/c/Makefile.in @@ -44,6 +44,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; @@ -82,7 +83,7 @@ liburweb_fastcgi_la_OBJECTS = $(am_liburweb_fastcgi_la_OBJECTS) liburweb_http_la_LIBADD = am_liburweb_http_la_OBJECTS = http.lo liburweb_http_la_OBJECTS = $(am_liburweb_http_la_OBJECTS) -DEFAULT_INCLUDES = -I.@am__isrc@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f diff --git a/src/cjr_print.sml b/src/cjr_print.sml index 06999dec..34936aac 100644 --- a/src/cjr_print.sml +++ b/src/cjr_print.sml @@ -2780,8 +2780,17 @@ fun p_file env (ds, ps) = newline] val initializers = List.mapPartial (fn (DTask (Initialize, e), _) => SOME e | _ => NONE) ds + + val now = Time.now () + val nowD = Date.fromTimeUniv now + val rfcFmt = "%a, %d %b %Y %H:%M:%S" in - box [string "#include <stdio.h>", + box [string "#include \"", + string (OS.Path.joinDirFile {dir = Config.includ, + file = "config.h"}), + string "\"", + newline, + string "#include <stdio.h>", newline, string "#include <stdlib.h>", newline, @@ -2789,6 +2798,8 @@ fun p_file env (ds, ps) = newline, string "#include <math.h>", newline, + string "#include <time.h>", + newline, if hasDb then box [string ("#include <" ^ #header (Settings.currentDbms ()) ^ ">"), newline] @@ -2875,7 +2886,22 @@ fun p_file env (ds, ps) = file = "app.js"}), string "\")) {", newline, - box [string "uw_write_header(ctx, \"Content-type: text/javascript\\r\\n\");", + box [string "uw_Basis_string ims = uw_Basis_requestHeader(ctx, \"If-modified-since\");", + newline, + string ("if (ims && !strcmp(ims, \"" ^ Date.fmt rfcFmt nowD ^ "\")) {"), + newline, + box [string "uw_clear_headers(ctx);", + newline, + string "uw_write_header(ctx, \"HTTP/1.1 304 Not Modified\\r\\n\");", + newline, + string "return;", + newline], + string "}", + newline, + newline, + string "uw_write_header(ctx, \"Content-type: text/javascript\\r\\n\");", + newline, + string ("uw_write_header(ctx, \"Last-modified: " ^ Date.fmt rfcFmt nowD ^ "\\r\\n\");"), newline, string "uw_write(ctx, jslib);", newline, |