| line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
|
1
|
1
|
|
|
1
|
|
387643
|
use 5.008001; use strict; use warnings; |
|
|
1
|
|
|
1
|
|
4
|
|
|
|
1
|
|
|
1
|
|
4
|
|
|
|
1
|
|
|
|
|
1
|
|
|
|
1
|
|
|
|
|
32
|
|
|
|
1
|
|
|
|
|
3
|
|
|
|
1
|
|
|
|
|
2
|
|
|
|
1
|
|
|
|
|
91
|
|
|
2
|
|
|
|
|
|
|
|
|
3
|
|
|
|
|
|
|
package Plack::Middleware::NeverExpire; |
|
4
|
|
|
|
|
|
|
|
|
5
|
|
|
|
|
|
|
our $VERSION = '1.201'; |
|
6
|
|
|
|
|
|
|
|
|
7
|
1
|
|
|
1
|
|
4
|
BEGIN { require Plack::Middleware; our @ISA = 'Plack::Middleware' } |
|
|
1
|
|
|
|
|
31
|
|
|
8
|
|
|
|
|
|
|
|
|
9
|
1
|
|
|
1
|
|
4
|
use Plack::Util (); |
|
|
1
|
|
|
|
|
1
|
|
|
|
1
|
|
|
|
|
275
|
|
|
10
|
|
|
|
|
|
|
|
|
11
|
|
|
|
|
|
|
sub ONE_YEAR () { 31_556_930 } # 365.24225 days |
|
12
|
|
|
|
|
|
|
|
|
13
|
|
|
|
|
|
|
# RFC 9110 Section 5.6.7 |
|
14
|
|
|
|
|
|
|
my @DAY = qw( Sun Mon Tue Wed Thu Fri Sat ); |
|
15
|
|
|
|
|
|
|
my @MON = qw( Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec ); |
|
16
|
|
|
|
|
|
|
sub FMT () { '%s, %02d %s %04d %02d:%02d:%02d GMT' } |
|
17
|
|
|
|
|
|
|
sub imf_fixdate { |
|
18
|
1
|
|
|
1
|
1
|
4
|
my @f = gmtime $_[0]; |
|
19
|
1
|
|
|
|
|
10
|
sprintf FMT, $DAY[$f[6]], $f[3], $MON[$f[4]], 1900+$f[5], @f[2,1,0]; |
|
20
|
|
|
|
|
|
|
} |
|
21
|
|
|
|
|
|
|
|
|
22
|
|
|
|
|
|
|
my $cached_stamp = imf_fixdate my $cached_time = time; |
|
23
|
|
|
|
|
|
|
sub inject_headers { |
|
24
|
1
|
50
|
|
1
|
1
|
81
|
$_[0][0] == 200 or return; |
|
25
|
1
|
|
|
|
|
3
|
my $h = $_[0][1]; |
|
26
|
1
|
|
|
|
|
4
|
push @$h, 'Cache-Control', 'max-age=' . ONE_YEAR . ', public'; |
|
27
|
1
|
|
|
|
|
3
|
my $now = time; |
|
28
|
1
|
50
|
|
|
|
5
|
$cached_time == $now or $cached_stamp = imf_fixdate ONE_YEAR + ( $cached_time = $now ); |
|
29
|
1
|
|
|
|
|
40
|
Plack::Util::header_set( $h, Expires => $cached_stamp ); |
|
30
|
|
|
|
|
|
|
} |
|
31
|
|
|
|
|
|
|
|
|
32
|
1
|
|
|
1
|
1
|
25091
|
sub call { Plack::Util::response_cb( &{ shift->app }, \&inject_headers ) } |
|
|
1
|
|
|
|
|
9
|
|
|
33
|
|
|
|
|
|
|
|
|
34
|
|
|
|
|
|
|
1; |
|
35
|
|
|
|
|
|
|
|
|
36
|
|
|
|
|
|
|
__END__ |