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/cjr_print.sml | |
parent | a89f9edc1c5718c2f6c1fcce2c131e6b4c2cced7 (diff) |
Support HTTP caching of app.js
Diffstat (limited to 'src/cjr_print.sml')
-rw-r--r-- | src/cjr_print.sml | 30 |
1 files changed, 28 insertions, 2 deletions
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, |