diff options
author | Eric Wong <e@80x24.org> | 2020-01-01 10:38:54 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2020-01-01 19:10:07 +0000 |
commit | f1d73de7cc202a70e97c31df236e1f23267a5f14 (patch) | |
tree | dc50d6b79e69f4749df359ae821dda4258554045 /lib/PublicInbox/WwwStatic.pm | |
parent | 0a3ead80bc685fcabed9f7dfaae35c74b72cd830 (diff) | |
download | public-inbox-f1d73de7cc202a70e97c31df236e1f23267a5f14.tar.gz |
We're already serving static files for cgit, and will serve more static files, soon.
Diffstat (limited to 'lib/PublicInbox/WwwStatic.pm')
-rw-r--r-- | lib/PublicInbox/WwwStatic.pm | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/PublicInbox/WwwStatic.pm b/lib/PublicInbox/WwwStatic.pm index 58db58b4..b8efcf62 100644 --- a/lib/PublicInbox/WwwStatic.pm +++ b/lib/PublicInbox/WwwStatic.pm @@ -4,6 +4,7 @@ package PublicInbox::WwwStatic; use strict; use Fcntl qw(:seek); +use HTTP::Date qw(time2str); sub prepare_range { my ($env, $in, $h, $beg, $end, $size) = @_; @@ -50,9 +51,14 @@ sub response { my ($env, $h, $path, $type) = @_; return unless -f $path && -r _; # just in case it's a FIFO :P - # TODO: If-Modified-Since and Last-Modified? open my $in, '<', $path or return; my $size = -s $in; + my $mtime = time2str((stat(_))[9]); + + if (my $ims = $env->{HTTP_IF_MODIFIED_SINCE}) { + return [ 304, [], [] ] if $mtime eq $ims; + } + my $len = $size; my $code = 200; push @$h, 'Content-Type', $type; @@ -63,7 +69,7 @@ sub response { return [ 416, $h, [] ]; } } - push @$h, 'Content-Length', $len; + push @$h, 'Content-Length', $len, 'Last-Modified', $mtime; my $body = bless { initial_rd => 65536, len => $len, |