forked from lix-project/hydra
Set Expires headers for Hydra's binary cache
This allows caching by reverse proxies.
This commit is contained in:
parent
55eb55478d
commit
c250407f3c
|
@ -244,6 +244,7 @@ sub nix_cache_info :Path('nix-cache-info') :Args(0) {
|
|||
# Give Hydra binary caches a very low priority (lower than the
|
||||
# static binary cache http://nixos.org/binary-cache).
|
||||
"Priority: 100\n";
|
||||
setCacheHeaders($c, 365 * 24 * 60 * 60);
|
||||
$c->forward('Hydra::View::Plain');
|
||||
}
|
||||
|
||||
|
@ -260,6 +261,7 @@ sub narinfo :LocalRegex('^([a-z0-9]+).narinfo$') :Args(0) {
|
|||
$c->response->content_type('text/plain');
|
||||
$c->stash->{plain}->{data} = "does not exist\n";
|
||||
$c->forward('Hydra::View::Plain');
|
||||
setCacheHeaders($c, 60 * 60);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -28,6 +28,7 @@ our @EXPORT = qw(
|
|||
showJobName
|
||||
showStatus
|
||||
getResponsibleAuthors
|
||||
setCacheHeaders
|
||||
);
|
||||
|
||||
|
||||
|
@ -305,4 +306,12 @@ sub getResponsibleAuthors {
|
|||
}
|
||||
|
||||
|
||||
# Set HTTP headers for the Nix binary cache.
|
||||
sub setCacheHeaders {
|
||||
my ($c, $expiration) = @_;
|
||||
$c->response->headers->expires(time + $expiration);
|
||||
delete $c->response->cookies->{hydra_session};
|
||||
}
|
||||
|
||||
|
||||
1;
|
||||
|
|
|
@ -5,6 +5,7 @@ use base qw/Catalyst::View/;
|
|||
use File::Basename;
|
||||
use Nix::Store;
|
||||
use Nix::Crypto;
|
||||
use Hydra::Helper::CatalystUtils;
|
||||
|
||||
sub process {
|
||||
my ($self, $c) = @_;
|
||||
|
@ -39,6 +40,8 @@ sub process {
|
|||
$info .= "Signature: 1;$keyName;$sig\n";
|
||||
}
|
||||
|
||||
setCacheHeaders($c, 24 * 60 * 60);
|
||||
|
||||
$c->response->body($info);
|
||||
|
||||
return 1;
|
||||
|
|
|
@ -2,6 +2,7 @@ package Hydra::View::NixNAR;
|
|||
|
||||
use strict;
|
||||
use base qw/Catalyst::View/;
|
||||
use Hydra::Helper::CatalystUtils;
|
||||
|
||||
sub process {
|
||||
my ($self, $c) = @_;
|
||||
|
@ -14,6 +15,8 @@ sub process {
|
|||
|
||||
open $fh, "nix-store --dump '$storePath' | bzip2 |";
|
||||
|
||||
setCacheHeaders($c, 365 * 24 * 60 * 60);
|
||||
|
||||
$c->response->body($fh);
|
||||
|
||||
return 1;
|
||||
|
|
Loading…
Reference in a new issue