Greatly increase cache max-ages
authorMarius Gavrilescu <marius@ieval.ro>
Sat, 21 Mar 2015 11:17:20 +0000 (13:17 +0200)
committerMarius Gavrilescu <marius@ieval.ro>
Sat, 21 Mar 2015 11:17:20 +0000 (13:17 +0200)
lib/Plack/App/Gruntmaster.pm

index 7a3dc348b065037ae139a111b2494945a85eb747..f401e3f5d403272e4ad971388ffea3755ae70428 100644 (file)
@@ -71,7 +71,7 @@ sub problem { db->problem ($_{problem}) }
 sub job     { db->job     ($_{job})     }
 sub user    { db->user    ($_{user})    }
 
-sub redirect { [301, ['X-Forever' => 1, 'Location' => $_[0]], []] }
+sub redirect { [301, ['X-Forever' => 1, 'Cache-Control' => 'public, max-age=86400', 'Location' => $_[0]], []] }
 sub reply    { [200, ['Content-Type' => 'text/plain; charset=utf-8'], \@_] }
 sub response {
        my ($template, $title, $params, $maxage) = @_;
@@ -81,7 +81,7 @@ sub response {
        }
        $params->{time} = time;
        $params->{args} = {%_};
-       bless {template => $template, title => $title, params => $params, maxage => ($maxage // 1)}, __PACKAGE__.'::Response'
+       bless {template => $template, title => $title, params => $params, maxage => ($maxage // 3600)}, __PACKAGE__.'::Response'
 }
 
 sub forbid {
@@ -135,7 +135,7 @@ sub dispatch_request{
                sub (/ed/:contest) {
                        forbid !contest->is_finished;
                        my $pblist = db->problem_list(contest => $_{contest}, solution => 1);
-                       response ed => 'Editorial of ' . contest->name, {%$pblist, editorial => contest->editorial};
+                       response ed => 'Editorial of ' . contest->name, {%$pblist, editorial => contest->editorial}, contest->is_finished(time - 86400) ? 60 : ();
                },
 
                sub (/login) {
@@ -146,10 +146,10 @@ sub dispatch_request{
                sub (/ct/:contest/log/st) { redirect "/st/$_{contest}" },
 
                sub (/us/)                                        { response us => 'Users', {us => db->user_list} },
-               sub (/ct/  + ?:owner~)                            { response ct => 'Contests', db->contest_list(%_) },
+               sub (/ct/  + ?:owner~)                            { response ct => 'Contests', db->contest_list(%_), 300 },
                sub (/log/ + ?:contest~&:owner~&:page~&:problem~&:private~&:result~) {
                        forbid $_{private};
-                       response log => 'Job list', {%{db->job_list(%_)}, maybe contest => $_{contest},}
+                       response log => 'Job list', {%{db->job_list(%_)}, maybe contest => $_{contest},}, 5
                },
                sub (/pb/  + ?:owner~&:contest~&:private~)                  {
                        forbid $_{private};
@@ -158,10 +158,10 @@ sub dispatch_request{
                },
 
                sub (/us/:user)    { response us_entry => user->name, db->user_entry($_{user}) },
-               sub (/ct/:contest) { response ct_entry => contest->name, db->contest_entry($_{contest}) },
+               sub (/ct/:contest) { response ct_entry => contest->name, db->contest_entry($_{contest}), 60 },
                sub (/log/:job)    {
                        forbid job->private;
-                       response log_entry => "Job  $_{job}", db->job_entry($_{job})
+                       response log_entry => "Job  $_{job}", db->job_entry($_{job}), 10
                },
                sub (/pb/:problem + ?contest~) {
                        my (undef, undef, $contest) = @_;
@@ -173,7 +173,7 @@ sub dispatch_request{
                                forbid !remote_user;
                                $privacy = 'private';
                        }
-                       response pb_entry => problem->name, {%{db->problem_entry($_{problem}, $_{contest}, remote_user && remote_user->id)}, maybe contest => $_{contest}};
+                       response pb_entry => problem->name, {%{db->problem_entry($_{problem}, $_{contest}, remote_user && remote_user->id)}, maybe contest => $_{contest}}, $_{contest} ? 10 : ();
                },
                sub (/sol/:problem) {
                        forbid problem->private;
@@ -182,7 +182,7 @@ sub dispatch_request{
 
                sub (/) { redispatch_to '/index' },
                sub (/favicon.ico) { redirect '/static/favicon.ico' },
-               sub (/:article) { [200, ['Content-Type' => 'text/html; charset=utf-8', 'Cache-Control' => 'public, max-age=60', 'X-Forever' => 1], [render_article $_{article}, 'en']] }
+               sub (/:article) { [200, ['Content-Type' => 'text/html; charset=utf-8', 'Cache-Control' => 'public, max-age=3600', 'X-Forever' => 1], [render_article $_{article}, 'en']] }
        },
 
        sub (POST) {
This page took 0.012291 seconds and 4 git commands to generate.