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
774
774
return (int ) $ this ->headers ->getCacheControlDirective ('max-age ' );
775
775
}
776
776
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 );
779
781
}
780
782
781
783
return null ;
@@ -819,7 +821,7 @@ public function setSharedMaxAge(int $value): object
819
821
*
820
822
* It returns null when no freshness information is present in the response.
821
823
*
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
823
825
* revalidating with the origin.
824
826
*
825
827
* @final
@@ -828,7 +830,7 @@ public function getTtl(): ?int
828
830
{
829
831
$ maxAge = $ this ->getMaxAge ();
830
832
831
- return null !== $ maxAge ? $ maxAge - $ this ->getAge () : null ;
833
+ return null !== $ maxAge ? max ( $ maxAge - $ this ->getAge (), 0 ) : null ;
832
834
}
833
835
834
836
/**
Original file line number Diff line number Diff line change @@ -353,9 +353,8 @@ public function testGetMaxAge()
353
353
$ this ->assertEquals (3600 , $ response ->getMaxAge (), '->getMaxAge() falls back to Expires when no max-age or s-maxage directive present ' );
354
354
355
355
$ response = new Response ();
356
- $ response ->headers ->set ('Cache-Control ' , 'must-revalidate ' );
357
356
$ response ->headers ->set ('Expires ' , -1 );
358
- $ this ->assertLessThanOrEqual ( time () - 2 * 86400 , $ response ->getExpires ()-> format ( ' U ' ));
357
+ $ this ->assertSame ( 0 , $ response ->getMaxAge ( ));
359
358
360
359
$ response = new Response ();
361
360
$ this ->assertNull ($ response ->getMaxAge (), '->getMaxAge() returns null if no freshness information available ' );
@@ -436,7 +435,7 @@ public function testGetTtl()
436
435
437
436
$ response = new Response ();
438
437
$ 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 ' );
440
439
441
440
$ response = new Response ();
442
441
$ response ->headers ->set ('Expires ' , $ response ->getDate ()->format (\DATE_RFC2822 ));
You can’t perform that action at this time.
0 commit comments