jestem flumoxed ... re this i this "meta" pytania ...OutputCache porcja danych długo nieaktualne
To bardzo prosty wniosek http:
GET http://stackoverflow.com/feeds/tag?tagnames=c%23&sort=newest HTTP/1.1
Host: stackoverflow.com
Accept-Encoding: gzip,deflate
który uderza trasy ozdobione :
[OutputCache(Duration = 300, VaryByParam = "tagnames;sort",
VaryByContentEncoding = "gzip;deflate", VaryByCustom = "site")]
jest wielokrotnie i nieprawidłowo Servin g albo 304 (bez zmian), jeśli zawierają if-Modified-Since lub stare dane dla 200, tj
HTTP/1.1 200 OK
Cache-Control: public, max-age=0
Content-Type: application/atom+xml; charset=utf-8
Content-Encoding: gzip
Expires: Fri, 01 Jul 2011 09:17:08 GMT
Last-Modified: Fri, 01 Jul 2011 09:12:08 GMT
Vary: *
Date: Fri, 01 Jul 2011 09:42:46 GMT
Content-Length: 14714
(payload, when decoded = some long-stale data)
Jak widać, to służy to prawie pół godziny przeszłość 5-minutowy automat; wygląda na to, że wewnętrzne elementy OutputCache po prostu nie zauważyły czasu; p To wygaśnie ostatecznie (w rzeczywistości właśnie to zrobiło - moje żądanie Fri, 01 Jul 2011 09:56:20 GMT
dostało wreszcie nowe dane), ale nie nigdzie jak punktualnie.
UPDATE:
I Uważa że pracuje gdybyśmy zabrali nagłówek akceptować-kodowania, ale nie; to nie zbyt - to po prostu nie działa na innym cyklu (czyli to, co należy się spodziewać, gdyż klucze są różne, dzięki uprzejmości VaryByContentEncoding
):
GET http://stackoverflow.com/feeds/tag?tagnames=c%23&sort=newest HTTP/1.1
Host: stackoverflow.com
daje:
HTTP/1.1 200 OK
Cache-Control: public, max-age=0
Content-Type: application/atom+xml; charset=utf-8
Expires: Fri, 01 Jul 2011 10:09:58 GMT
Last-Modified: Fri, 01 Jul 2011 10:04:58 GMT
Vary: *
Date: Fri, 01 Jul 2011 10:17:20 GMT
Content-Length: 66815
(payload = some stale data)
Po raz kolejny” Zauważ, że jest obsługiwany poExpires
.
A więc: co tu może być nie tak?
Dodatkowe; podczas gdy używamy opcji niestandardowej, nasz GetVaryByCustomString()
poprawnie wywołuje base.GetVaryByCustomString(ctx, custom)
dla opcji, których nie rozpoznaje, zgodnie z MSDN (rzeczywiście działa to dobrze dla drugiego przykładu powyżej).
Marc Twój niestandardowy dostawca pamięci podręcznej danych wyjściowych nie mógłby być gdzieś otwarty, czy nie? –
@ runxc1 Musiałbym sprawdzić, ale nasze domyślne narzędzie "idź do" tam jest czerwone jest przez booksleeve (oba są otwarte źródła) za pomocą niestandardowych wrapperów (które nie są). Jednak w mojej głowie brzmi nie tak, by myśleć tutaj o Redisie - będę musiał rzucić okiem na kod. –
Czy kiedykolwiek znalazłeś niestandardowego dostawcę cache? Po prostu ciekawy, jak to, że naprawdę brakuje w nich wypieków. –