@@ -30,7 +30,7 @@ public virtual bool IsRequestCacheable(ResponseCachingContext context)
3030 // Verify request cache-control parameters
3131 if ( ! StringValues . IsNullOrEmpty ( request . Headers [ HeaderNames . CacheControl ] ) )
3232 {
33- if ( HttpHeaderParsingHelpers . HeaderContains ( request . Headers [ HeaderNames . CacheControl ] , CacheControlValues . NoCacheString ) )
33+ if ( HeaderUtilities . ContainsCacheDirective ( request . Headers [ HeaderNames . CacheControl ] , CacheControlHeaderValue . NoCacheString ) )
3434 {
3535 context . Logger . LogRequestWithNoCacheNotCacheable ( ) ;
3636 return false ;
@@ -40,7 +40,7 @@ public virtual bool IsRequestCacheable(ResponseCachingContext context)
4040 {
4141 // Support for legacy HTTP 1.0 cache directive
4242 var pragmaHeaderValues = request . Headers [ HeaderNames . Pragma ] ;
43- if ( HttpHeaderParsingHelpers . HeaderContains ( request . Headers [ HeaderNames . Pragma ] , CacheControlValues . NoCacheString ) )
43+ if ( HeaderUtilities . ContainsCacheDirective ( request . Headers [ HeaderNames . Pragma ] , CacheControlHeaderValue . NoCacheString ) )
4444 {
4545 context . Logger . LogRequestWithPragmaNoCacheNotCacheable ( ) ;
4646 return false ;
@@ -55,27 +55,22 @@ public virtual bool IsResponseCacheable(ResponseCachingContext context)
5555 var responseCacheControlHeader = context . HttpContext . Response . Headers [ HeaderNames . CacheControl ] ;
5656
5757 // Only cache pages explicitly marked with public
58- if ( ! HttpHeaderParsingHelpers . HeaderContains ( responseCacheControlHeader , CacheControlValues . PublicString ) )
58+ if ( ! HeaderUtilities . ContainsCacheDirective ( responseCacheControlHeader , CacheControlHeaderValue . PublicString ) )
5959 {
6060 context . Logger . LogResponseWithoutPublicNotCacheable ( ) ;
6161 return false ;
6262 }
6363
6464 // Check no-store
65- if ( HttpHeaderParsingHelpers . HeaderContains ( context . HttpContext . Request . Headers [ HeaderNames . CacheControl ] , CacheControlValues . NoStoreString ) )
66- {
67- context . Logger . LogResponseWithNoStoreNotCacheable ( ) ;
68- return false ;
69- }
70-
71- if ( HttpHeaderParsingHelpers . HeaderContains ( responseCacheControlHeader , CacheControlValues . NoStoreString ) )
65+ if ( HeaderUtilities . ContainsCacheDirective ( context . HttpContext . Request . Headers [ HeaderNames . CacheControl ] , CacheControlHeaderValue . NoStoreString )
66+ || HeaderUtilities . ContainsCacheDirective ( responseCacheControlHeader , CacheControlHeaderValue . NoStoreString ) )
7267 {
7368 context . Logger . LogResponseWithNoStoreNotCacheable ( ) ;
7469 return false ;
7570 }
7671
7772 // Check no-cache
78- if ( HttpHeaderParsingHelpers . HeaderContains ( responseCacheControlHeader , CacheControlValues . NoCacheString ) )
73+ if ( HeaderUtilities . ContainsCacheDirective ( responseCacheControlHeader , CacheControlHeaderValue . NoCacheString ) )
7974 {
8075 context . Logger . LogResponseWithNoCacheNotCacheable ( ) ;
8176 return false ;
@@ -99,7 +94,7 @@ public virtual bool IsResponseCacheable(ResponseCachingContext context)
9994 }
10095
10196 // Check private
102- if ( HttpHeaderParsingHelpers . HeaderContains ( responseCacheControlHeader , CacheControlValues . PrivateString ) )
97+ if ( HeaderUtilities . ContainsCacheDirective ( responseCacheControlHeader , CacheControlHeaderValue . PrivateString ) )
10398 {
10499 context . Logger . LogResponseWithPrivateNotCacheable ( ) ;
105100 return false ;
@@ -159,20 +154,20 @@ public virtual bool IsResponseCacheable(ResponseCachingContext context)
159154 public virtual bool IsCachedEntryFresh ( ResponseCachingContext context )
160155 {
161156 var age = context . CachedEntryAge . Value ;
162- var cachedControlHeaders = context . CachedResponseHeaders [ HeaderNames . CacheControl ] ;
157+ var cachedCacheControlHeaders = context . CachedResponseHeaders [ HeaderNames . CacheControl ] ;
163158 var requestCacheControlHeaders = context . HttpContext . Request . Headers [ HeaderNames . CacheControl ] ;
164159
165160 // Add min-fresh requirements
166161 TimeSpan ? minFresh ;
167- if ( HttpHeaderParsingHelpers . TryParseHeaderTimeSpan ( requestCacheControlHeaders , CacheControlValues . MinFreshString , out minFresh ) )
162+ if ( HeaderUtilities . TryParseSeconds ( requestCacheControlHeaders , CacheControlHeaderValue . MinFreshString , out minFresh ) )
168163 {
169164 age += minFresh . Value ;
170165 context . Logger . LogExpirationMinFreshAdded ( minFresh . Value ) ;
171166 }
172167
173168 // Validate shared max age, this overrides any max age settings for shared caches
174169 TimeSpan ? cachedSharedMaxAge ;
175- HttpHeaderParsingHelpers . TryParseHeaderTimeSpan ( cachedControlHeaders , CacheControlValues . SharedMaxAgeString , out cachedSharedMaxAge ) ;
170+ HeaderUtilities . TryParseSeconds ( cachedCacheControlHeaders , CacheControlHeaderValue . SharedMaxAgeString , out cachedSharedMaxAge ) ;
176171
177172 if ( age >= cachedSharedMaxAge )
178173 {
@@ -183,24 +178,24 @@ public virtual bool IsCachedEntryFresh(ResponseCachingContext context)
183178 else if ( ! cachedSharedMaxAge . HasValue )
184179 {
185180 TimeSpan ? requestMaxAge ;
186- HttpHeaderParsingHelpers . TryParseHeaderTimeSpan ( requestCacheControlHeaders , CacheControlValues . MaxAgeString , out requestMaxAge ) ;
181+ HeaderUtilities . TryParseSeconds ( requestCacheControlHeaders , CacheControlHeaderValue . MaxAgeString , out requestMaxAge ) ;
187182
188183 TimeSpan ? cachedMaxAge ;
189- HttpHeaderParsingHelpers . TryParseHeaderTimeSpan ( cachedControlHeaders , CacheControlValues . MaxAgeString , out cachedMaxAge ) ;
184+ HeaderUtilities . TryParseSeconds ( cachedCacheControlHeaders , CacheControlHeaderValue . MaxAgeString , out cachedMaxAge ) ;
190185
191186 var lowestMaxAge = cachedMaxAge < requestMaxAge ? cachedMaxAge : requestMaxAge ?? cachedMaxAge ;
192187 // Validate max age
193188 if ( age >= lowestMaxAge )
194189 {
195190 // Must revalidate
196- if ( HttpHeaderParsingHelpers . HeaderContains ( cachedControlHeaders , CacheControlValues . MustRevalidateString ) )
191+ if ( HeaderUtilities . ContainsCacheDirective ( cachedCacheControlHeaders , CacheControlHeaderValue . MustRevalidateString ) )
197192 {
198193 context . Logger . LogExpirationMustRevalidate ( age , lowestMaxAge . Value ) ;
199194 return false ;
200195 }
201196
202197 TimeSpan ? requestMaxStale ;
203- HttpHeaderParsingHelpers . TryParseHeaderTimeSpan ( requestCacheControlHeaders , CacheControlValues . MaxStaleString , out requestMaxStale ) ;
198+ HeaderUtilities . TryParseSeconds ( requestCacheControlHeaders , CacheControlHeaderValue . MaxStaleString , out requestMaxStale ) ;
204199
205200 // Request allows stale values
206201 if ( requestMaxStale . HasValue && age - lowestMaxAge < requestMaxStale )
@@ -216,7 +211,7 @@ public virtual bool IsCachedEntryFresh(ResponseCachingContext context)
216211 {
217212 // Validate expiration
218213 DateTimeOffset expires ;
219- if ( HttpHeaderParsingHelpers . TryParseHeaderDate ( context . CachedResponseHeaders [ HeaderNames . Expires ] , out expires ) &&
214+ if ( HeaderUtilities . TryParseDate ( context . CachedResponseHeaders [ HeaderNames . Expires ] , out expires ) &&
220215 context . ResponseTime . Value >= expires )
221216 {
222217 context . Logger . LogExpirationExpiresExceeded ( context . ResponseTime . Value , expires ) ;
0 commit comments