@@ -30,7 +30,7 @@ public virtual bool IsRequestCacheable(ResponseCachingContext context)
30
30
// Verify request cache-control parameters
31
31
if ( ! StringValues . IsNullOrEmpty ( request . Headers [ HeaderNames . CacheControl ] ) )
32
32
{
33
- if ( HttpHeaderParsingHelpers . HeaderContains ( request . Headers [ HeaderNames . CacheControl ] , CacheControlValues . NoCacheString ) )
33
+ if ( HeaderUtilities . ContainsCacheDirective ( request . Headers [ HeaderNames . CacheControl ] , CacheControlHeaderValue . NoCacheString ) )
34
34
{
35
35
context . Logger . LogRequestWithNoCacheNotCacheable ( ) ;
36
36
return false ;
@@ -40,7 +40,7 @@ public virtual bool IsRequestCacheable(ResponseCachingContext context)
40
40
{
41
41
// Support for legacy HTTP 1.0 cache directive
42
42
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 ) )
44
44
{
45
45
context . Logger . LogRequestWithPragmaNoCacheNotCacheable ( ) ;
46
46
return false ;
@@ -55,27 +55,22 @@ public virtual bool IsResponseCacheable(ResponseCachingContext context)
55
55
var responseCacheControlHeader = context . HttpContext . Response . Headers [ HeaderNames . CacheControl ] ;
56
56
57
57
// Only cache pages explicitly marked with public
58
- if ( ! HttpHeaderParsingHelpers . HeaderContains ( responseCacheControlHeader , CacheControlValues . PublicString ) )
58
+ if ( ! HeaderUtilities . ContainsCacheDirective ( responseCacheControlHeader , CacheControlHeaderValue . PublicString ) )
59
59
{
60
60
context . Logger . LogResponseWithoutPublicNotCacheable ( ) ;
61
61
return false ;
62
62
}
63
63
64
64
// 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 ) )
72
67
{
73
68
context . Logger . LogResponseWithNoStoreNotCacheable ( ) ;
74
69
return false ;
75
70
}
76
71
77
72
// Check no-cache
78
- if ( HttpHeaderParsingHelpers . HeaderContains ( responseCacheControlHeader , CacheControlValues . NoCacheString ) )
73
+ if ( HeaderUtilities . ContainsCacheDirective ( responseCacheControlHeader , CacheControlHeaderValue . NoCacheString ) )
79
74
{
80
75
context . Logger . LogResponseWithNoCacheNotCacheable ( ) ;
81
76
return false ;
@@ -99,7 +94,7 @@ public virtual bool IsResponseCacheable(ResponseCachingContext context)
99
94
}
100
95
101
96
// Check private
102
- if ( HttpHeaderParsingHelpers . HeaderContains ( responseCacheControlHeader , CacheControlValues . PrivateString ) )
97
+ if ( HeaderUtilities . ContainsCacheDirective ( responseCacheControlHeader , CacheControlHeaderValue . PrivateString ) )
103
98
{
104
99
context . Logger . LogResponseWithPrivateNotCacheable ( ) ;
105
100
return false ;
@@ -159,20 +154,20 @@ public virtual bool IsResponseCacheable(ResponseCachingContext context)
159
154
public virtual bool IsCachedEntryFresh ( ResponseCachingContext context )
160
155
{
161
156
var age = context . CachedEntryAge . Value ;
162
- var cachedControlHeaders = context . CachedResponseHeaders [ HeaderNames . CacheControl ] ;
157
+ var cachedCacheControlHeaders = context . CachedResponseHeaders [ HeaderNames . CacheControl ] ;
163
158
var requestCacheControlHeaders = context . HttpContext . Request . Headers [ HeaderNames . CacheControl ] ;
164
159
165
160
// Add min-fresh requirements
166
161
TimeSpan ? minFresh ;
167
- if ( HttpHeaderParsingHelpers . TryParseHeaderTimeSpan ( requestCacheControlHeaders , CacheControlValues . MinFreshString , out minFresh ) )
162
+ if ( HeaderUtilities . TryParseSeconds ( requestCacheControlHeaders , CacheControlHeaderValue . MinFreshString , out minFresh ) )
168
163
{
169
164
age += minFresh . Value ;
170
165
context . Logger . LogExpirationMinFreshAdded ( minFresh . Value ) ;
171
166
}
172
167
173
168
// Validate shared max age, this overrides any max age settings for shared caches
174
169
TimeSpan ? cachedSharedMaxAge ;
175
- HttpHeaderParsingHelpers . TryParseHeaderTimeSpan ( cachedControlHeaders , CacheControlValues . SharedMaxAgeString , out cachedSharedMaxAge ) ;
170
+ HeaderUtilities . TryParseSeconds ( cachedCacheControlHeaders , CacheControlHeaderValue . SharedMaxAgeString , out cachedSharedMaxAge ) ;
176
171
177
172
if ( age >= cachedSharedMaxAge )
178
173
{
@@ -183,24 +178,24 @@ public virtual bool IsCachedEntryFresh(ResponseCachingContext context)
183
178
else if ( ! cachedSharedMaxAge . HasValue )
184
179
{
185
180
TimeSpan ? requestMaxAge ;
186
- HttpHeaderParsingHelpers . TryParseHeaderTimeSpan ( requestCacheControlHeaders , CacheControlValues . MaxAgeString , out requestMaxAge ) ;
181
+ HeaderUtilities . TryParseSeconds ( requestCacheControlHeaders , CacheControlHeaderValue . MaxAgeString , out requestMaxAge ) ;
187
182
188
183
TimeSpan ? cachedMaxAge ;
189
- HttpHeaderParsingHelpers . TryParseHeaderTimeSpan ( cachedControlHeaders , CacheControlValues . MaxAgeString , out cachedMaxAge ) ;
184
+ HeaderUtilities . TryParseSeconds ( cachedCacheControlHeaders , CacheControlHeaderValue . MaxAgeString , out cachedMaxAge ) ;
190
185
191
186
var lowestMaxAge = cachedMaxAge < requestMaxAge ? cachedMaxAge : requestMaxAge ?? cachedMaxAge ;
192
187
// Validate max age
193
188
if ( age >= lowestMaxAge )
194
189
{
195
190
// Must revalidate
196
- if ( HttpHeaderParsingHelpers . HeaderContains ( cachedControlHeaders , CacheControlValues . MustRevalidateString ) )
191
+ if ( HeaderUtilities . ContainsCacheDirective ( cachedCacheControlHeaders , CacheControlHeaderValue . MustRevalidateString ) )
197
192
{
198
193
context . Logger . LogExpirationMustRevalidate ( age , lowestMaxAge . Value ) ;
199
194
return false ;
200
195
}
201
196
202
197
TimeSpan ? requestMaxStale ;
203
- HttpHeaderParsingHelpers . TryParseHeaderTimeSpan ( requestCacheControlHeaders , CacheControlValues . MaxStaleString , out requestMaxStale ) ;
198
+ HeaderUtilities . TryParseSeconds ( requestCacheControlHeaders , CacheControlHeaderValue . MaxStaleString , out requestMaxStale ) ;
204
199
205
200
// Request allows stale values
206
201
if ( requestMaxStale . HasValue && age - lowestMaxAge < requestMaxStale )
@@ -216,7 +211,7 @@ public virtual bool IsCachedEntryFresh(ResponseCachingContext context)
216
211
{
217
212
// Validate expiration
218
213
DateTimeOffset expires ;
219
- if ( HttpHeaderParsingHelpers . TryParseHeaderDate ( context . CachedResponseHeaders [ HeaderNames . Expires ] , out expires ) &&
214
+ if ( HeaderUtilities . TryParseDate ( context . CachedResponseHeaders [ HeaderNames . Expires ] , out expires ) &&
220
215
context . ResponseTime . Value >= expires )
221
216
{
222
217
context . Logger . LogExpirationExpiresExceeded ( context . ResponseTime . Value , expires ) ;
0 commit comments