diff --git a/cpanfile b/cpanfile
index 0b979abb1..c5cc81365 100644
--- a/cpanfile
+++ b/cpanfile
@@ -78,7 +78,7 @@ requires 'LWP::Protocol::https';
 requires 'LWP::UserAgent', '6.66';
 requires 'MetaCPAN::Moose';
 requires 'MetaCPAN::Pod::HTML' => '0.004000';
-requires 'MetaCPAN::Role', '0.06';
+requires 'MetaCPAN::Role', '1.00';
 requires 'MIME::Base64', '3.15';
 requires 'Minion', '9.03';
 requires 'Minion::Backend::SQLite';
diff --git a/cpanfile.snapshot b/cpanfile.snapshot
index 05d2dd23a..c3272cc2c 100644
--- a/cpanfile.snapshot
+++ b/cpanfile.snapshot
@@ -3540,18 +3540,18 @@ DISTRIBUTIONS
       Pod::Simple::XHTML 3.45
       URL::Encode 0.03
       namespace::clean 0.27
-  MetaCPAN-Role-0.06
-    pathname: L/LL/LLAP/MetaCPAN-Role-0.06.tar.gz
+  MetaCPAN-Role-1.00
+    pathname: L/LL/LLAP/MetaCPAN-Role-1.00.tar.gz
     provides:
-      MetaCPAN::Role 0.06
-      MetaCPAN::Role::Fastly 0.06
-      MetaCPAN::Role::Fastly::Catalyst 0.06
+      MetaCPAN::Role 1.00
+      MetaCPAN::Role::Fastly 1.00
+      MetaCPAN::Role::Fastly::Catalyst 1.00
     requirements:
       Carp 0
-      CatalystX::Fastly::Role::Response 0.04
+      CatalystX::Fastly::Role::Response 0.07
       ExtUtils::MakeMaker 0
       Moose::Role 0
-      MooseX::Fastly::Role 0.01
+      MooseX::Fastly::Role 0.04
       Net::Fastly 1.05
   Minion-10.31
     pathname: S/SR/SRI/Minion-10.31.tar.gz
diff --git a/t/server/controller/author.t b/t/server/controller/author.t
index 1baa44bfc..7b5538ad0 100644
--- a/t/server/controller/author.t
+++ b/t/server/controller/author.t
@@ -19,14 +19,16 @@ my %tests = (
         cache_control => undef,
         surrogate_key =>
             'author=DOESNEXIST content_type=application/json content_type=application',
-        surrogate_control => 'max-age=31556952, stale-if-error=2592000',
+        surrogate_control =>
+            'max-age=31556952, stale-while-revalidate=86400, stale-if-error=2592000',
     },
     '/author/MO' => {
         code          => 200,
         cache_control => undef,
         surrogate_key =>
             'author=MO content_type=application/json content_type=application',
-        surrogate_control => 'max-age=31556952, stale-if-error=2592000',
+        surrogate_control =>
+            'max-age=31556952, stale-while-revalidate=86400, stale-if-error=2592000',
     },
     '/author/_mapping' => {
         code          => 200,
diff --git a/t/server/controller/changes.t b/t/server/controller/changes.t
index f383ad5c1..d64cbb3ad 100644
--- a/t/server/controller/changes.t
+++ b/t/server/controller/changes.t
@@ -10,14 +10,16 @@ my $LOCAL_default_headers = {
     cache_control => undef,
     surrogate_key =>
         'author=LOCAL content_type=application/json content_type=application',
-    surrogate_control => 'max-age=31556952, stale-if-error=2592000',
+    surrogate_control =>
+        'max-age=31556952, stale-while-revalidate=86400, stale-if-error=2592000',
 };
 
 my $RWSTAUNER_default_headers = {
     cache_control => undef,
     surrogate_key =>
         'author=RWSTAUNER content_type=application/json content_type=application',
-    surrogate_control => 'max-age=31556952, stale-if-error=2592000',
+    surrogate_control =>
+        'max-age=31556952, stale-while-revalidate=86400, stale-if-error=2592000',
 };
 
 my @tests = (
@@ -53,7 +55,8 @@ my @tests = (
             cache_control => undef,
             surrogate_key =>
                 'author=NOEXISTY content_type=application/json content_type=application',
-            surrogate_control => 'max-age=31556952, stale-if-error=2592000',
+            surrogate_control =>
+                'max-age=31556952, stale-while-revalidate=86400, stale-if-error=2592000',
         }
     ],
     [
@@ -63,7 +66,8 @@ my @tests = (
             cache_control => undef,
             surrogate_key =>
                 'author=NOAUTOR content_type=application/json content_type=application',
-            surrogate_control => 'max-age=31556952, stale-if-error=2592000',
+            surrogate_control =>
+                'max-age=31556952, stale-while-revalidate=86400, stale-if-error=2592000',
         }
     ],
 
diff --git a/t/server/controller/diff.t b/t/server/controller/diff.t
index e8d8e6a67..d6dc18e89 100644
--- a/t/server/controller/diff.t
+++ b/t/server/controller/diff.t
@@ -72,7 +72,8 @@ test_psgi app, sub {
             cache_control => undef,
             surrogate_key =>
                 'author=DOY content_type=application/json content_type=application',
-            surrogate_control => 'max-age=31556952, stale-if-error=2592000',
+            surrogate_control =>
+                'max-age=31556952, stale-while-revalidate=86400, stale-if-error=2592000',
         }
     );
 
@@ -95,7 +96,8 @@ test_psgi app, sub {
             cache_control => undef,
             surrogate_key =>
                 'content_type=application/json content_type=application',
-            surrogate_control => 'max-age=31556952, stale-if-error=2592000',
+            surrogate_control =>
+                'max-age=31556952, stale-while-revalidate=86400, stale-if-error=2592000',
         }
     );
 
diff --git a/t/server/controller/file.t b/t/server/controller/file.t
index db5c5087b..1deb132e2 100644
--- a/t/server/controller/file.t
+++ b/t/server/controller/file.t
@@ -34,14 +34,16 @@ my %tests = (
         cache_control => undef,
         surrogate_key =>
             'author=DOES content_type=application/json content_type=application',
-        surrogate_control => 'max-age=31556952, stale-if-error=2592000',
+        surrogate_control =>
+            'max-age=31556952, stale-while-revalidate=86400, stale-if-error=2592000',
     },
     '/file/DOY/Moose-0.01/lib/Moose.pm' => {
         code          => 200,
         cache_control => undef,
         surrogate_key =>
             'author=DOY content_type=application/json content_type=application',
-        surrogate_control => 'max-age=31556952, stale-if-error=2592000',
+        surrogate_control =>
+            'max-age=31556952, stale-while-revalidate=86400, stale-if-error=2592000',
     },
 );
 
diff --git a/t/server/controller/module.t b/t/server/controller/module.t
index 5faf6ea79..c5af60c45 100644
--- a/t/server/controller/module.t
+++ b/t/server/controller/module.t
@@ -21,7 +21,8 @@ my %tests = (
         cache_control => undef,
         surrogate_key =>
             'author=DOY content_type=application/json content_type=application',
-        surrogate_control => 'max-age=31556952, stale-if-error=2592000',
+        surrogate_control =>
+            'max-age=31556952, stale-while-revalidate=86400, stale-if-error=2592000',
     },
     '/module/Moose' => {
         code          => 200,
@@ -50,7 +51,8 @@ my %tests = (
         cache_control => undef,
         surrogate_key =>
             'author=DOES content_type=application/json content_type=application',
-        surrogate_control => 'max-age=31556952, stale-if-error=2592000',
+        surrogate_control =>
+            'max-age=31556952, stale-while-revalidate=86400, stale-if-error=2592000',
     },
 
 );
diff --git a/t/server/controller/pod.t b/t/server/controller/pod.t
index 05dceccfe..9741ca9c2 100644
--- a/t/server/controller/pod.t
+++ b/t/server/controller/pod.t
@@ -36,7 +36,8 @@ my @tests = (
             cache_control => undef,
             surrogate_key =>
                 'author=DOY content_type=application/json content_type=application',
-            surrogate_control => 'max-age=31556952, stale-if-error=2592000',
+            surrogate_control =>
+                'max-age=31556952, stale-while-revalidate=86400, stale-if-error=2592000',
         },
     },
     {
@@ -46,7 +47,8 @@ my @tests = (
             cache_control => undef,
             surrogate_key =>
                 'author=DOY content_type=text/html content_type=text',
-            surrogate_control => 'max-age=31556952, stale-if-error=2592000',
+            surrogate_control =>
+                'max-age=31556952, stale-while-revalidate=86400, stale-if-error=2592000',
         },
     },
     {
@@ -56,7 +58,8 @@ my @tests = (
             cache_control => undef,
             surrogate_key =>
                 'author=DOY content_type=text/html content_type=text',
-            surrogate_control => 'max-age=31556952, stale-if-error=2592000',
+            surrogate_control =>
+                'max-age=31556952, stale-while-revalidate=86400, stale-if-error=2592000',
         },
     },
     {
@@ -66,7 +69,8 @@ my @tests = (
             cache_control => undef,
             surrogate_key =>
                 'author=MO content_type=text/html content_type=text',
-            surrogate_control => 'max-age=31556952, stale-if-error=2592000',
+            surrogate_control =>
+                'max-age=31556952, stale-while-revalidate=86400, stale-if-error=2592000',
         },
     },
 );
diff --git a/t/server/controller/source.t b/t/server/controller/source.t
index 05453de86..97d5f8cd1 100644
--- a/t/server/controller/source.t
+++ b/t/server/controller/source.t
@@ -20,35 +20,40 @@ my %tests = (
         cache_control => undef,
         surrogate_key =>
             'author=DOY content_type=text/html content_type=text',
-        surrogate_control => 'max-age=31556952, stale-if-error=2592000'
+        surrogate_control =>
+            'max-age=31556952, stale-while-revalidate=86400, stale-if-error=2592000'
     },
     '/source/DOY/Moose-0.01/Changes' => {
         code          => 200,
         cache_control => undef,
         surrogate_key =>
             'author=DOY content_type=text/plain content_type=text',
-        surrogate_control => 'max-age=31556952, stale-if-error=2592000',
+        surrogate_control =>
+            'max-age=31556952, stale-while-revalidate=86400, stale-if-error=2592000',
     },
     '/source/DOY/Moose-0.01/Changes?callback=foo' => {
         code          => 200,
         cache_control => undef,
         surrogate_key =>
             'author=DOY content_type=text/javascript content_type=text',
-        surrogate_control => 'max-age=31556952, stale-if-error=2592000',
+        surrogate_control =>
+            'max-age=31556952, stale-while-revalidate=86400, stale-if-error=2592000',
     },
     '/source/DOY/Moose-0.01/MANIFEST' => {
         code          => 200,
         cache_control => undef,
         surrogate_key =>
             'author=DOY content_type=text/plain content_type=text',
-        surrogate_control => 'max-age=31556952, stale-if-error=2592000',
+        surrogate_control =>
+            'max-age=31556952, stale-while-revalidate=86400, stale-if-error=2592000',
     },
     '/source/DOY/Moose-0.01/MANIFEST?callback=foo' => {
         code          => 200,
         cache_control => undef,
         surrogate_key =>
             'author=DOY content_type=text/javascript content_type=text',
-        surrogate_control => 'max-age=31556952, stale-if-error=2592000',
+        surrogate_control =>
+            'max-age=31556952, stale-while-revalidate=86400, stale-if-error=2592000',
     },
     '/source/Moose' => {
         code          => 200,