mirror of
https://github.com/SebastianWendel/nixpkgs.git
synced 2024-10-21 05:01:06 +02:00
f7e619617e
Otherwise Firefox will get confused.
38 lines
1.6 KiB
Diff
38 lines
1.6 KiB
Diff
Send an ETag header, and honour the If-None-Match request header
|
|
|
|
diff -ru -x '*~' Catalyst-Plugin-Static-Simple-0.30-orig/lib/Catalyst/Plugin/Static/Simple.pm Catalyst-Plugin-Static-Simple-0.30/lib/Catalyst/Plugin/Static/Simple.pm
|
|
--- Catalyst-Plugin-Static-Simple-0.30-orig/lib/Catalyst/Plugin/Static/Simple.pm 2012-05-04 18:49:30.000000000 +0200
|
|
+++ Catalyst-Plugin-Static-Simple-0.30/lib/Catalyst/Plugin/Static/Simple.pm 2013-02-25 22:57:18.667150181 +0100
|
|
@@ -187,16 +187,27 @@
|
|
my $type = $c->_ext_to_type( $full_path );
|
|
my $stat = stat $full_path;
|
|
|
|
- $c->res->headers->content_type( $type );
|
|
- $c->res->headers->content_length( $stat->size );
|
|
- $c->res->headers->last_modified( $stat->mtime );
|
|
# Tell Firefox & friends its OK to cache, even over SSL:
|
|
- $c->res->headers->header('Cache-control' => 'public');
|
|
+ #$c->res->headers->header('Cache-control' => 'public');
|
|
+
|
|
+ $c->res->headers->last_modified( $stat->mtime );
|
|
# Optionally, set a fixed expiry time:
|
|
if ($config->{expires}) {
|
|
$c->res->headers->expires(time() + $config->{expires});
|
|
}
|
|
|
|
+ if ($config->{send_etag}) {
|
|
+ my $etag = '"' . $stat->mtime . '-' . $stat->ino . '-'. $stat->size . '"';
|
|
+ $c->res->headers->header('ETag' => $etag);
|
|
+ if (($c->req->header('If-None-Match') // "") eq $etag) {
|
|
+ $c->res->status(304);
|
|
+ return 1;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ $c->res->headers->content_type( $type );
|
|
+ $c->res->headers->content_length( $stat->size );
|
|
+
|
|
my $fh = IO::File->new( $full_path, 'r' );
|
|
if ( defined $fh ) {
|
|
binmode $fh;
|