File tree Expand file tree Collapse file tree 2 files changed +8
-7
lines changed Expand file tree Collapse file tree 2 files changed +8
-7
lines changed Original file line number Diff line number Diff line change @@ -774,8 +774,10 @@ public function getMaxAge(): ?int
774774 return (int ) $ this ->headers ->getCacheControlDirective ('max-age ' );
775775 }
776776
777- if (null !== $ this ->getExpires ()) {
778- return (int ) $ this ->getExpires ()->format ('U ' ) - (int ) $ this ->getDate ()->format ('U ' );
777+ if (null !== $ expires = $ this ->getExpires ()) {
778+ $ maxAge = (int ) $ expires ->format ('U ' ) - (int ) $ this ->getDate ()->format ('U ' );
779+
780+ return max ($ maxAge , 0 );
779781 }
780782
781783 return null ;
@@ -819,7 +821,7 @@ public function setSharedMaxAge(int $value): object
819821 *
820822 * It returns null when no freshness information is present in the response.
821823 *
822- * When the responses TTL is <= 0, the response may not be served from cache without first
824+ * When the response's TTL is 0, the response may not be served from cache without first
823825 * revalidating with the origin.
824826 *
825827 * @final
@@ -828,7 +830,7 @@ public function getTtl(): ?int
828830 {
829831 $ maxAge = $ this ->getMaxAge ();
830832
831- return null !== $ maxAge ? $ maxAge - $ this ->getAge () : null ;
833+ return null !== $ maxAge ? max ( $ maxAge - $ this ->getAge (), 0 ) : null ;
832834 }
833835
834836 /**
Original file line number Diff line number Diff line change @@ -353,9 +353,8 @@ public function testGetMaxAge()
353353 $ this ->assertEquals (3600 , $ response ->getMaxAge (), '->getMaxAge() falls back to Expires when no max-age or s-maxage directive present ' );
354354
355355 $ response = new Response ();
356- $ response ->headers ->set ('Cache-Control ' , 'must-revalidate ' );
357356 $ response ->headers ->set ('Expires ' , -1 );
358- $ this ->assertLessThanOrEqual ( time () - 2 * 86400 , $ response ->getExpires ()-> format ( ' U ' ));
357+ $ this ->assertSame ( 0 , $ response ->getMaxAge ( ));
359358
360359 $ response = new Response ();
361360 $ this ->assertNull ($ response ->getMaxAge (), '->getMaxAge() returns null if no freshness information available ' );
@@ -436,7 +435,7 @@ public function testGetTtl()
436435
437436 $ response = new Response ();
438437 $ response ->headers ->set ('Expires ' , $ this ->createDateTimeOneHourAgo ()->format (\DATE_RFC2822 ));
439- $ this ->assertLessThan (0 , $ response ->getTtl (), '->getTtl() returns negative values when Expires is in past ' );
438+ $ this ->assertSame (0 , $ response ->getTtl (), '->getTtl() returns zero when Expires is in past ' );
440439
441440 $ response = new Response ();
442441 $ response ->headers ->set ('Expires ' , $ response ->getDate ()->format (\DATE_RFC2822 ));
You can’t perform that action at this time.
0 commit comments