W aplikacji ASP.NET Core mam metodę działania, która zwraca niektóre dane. Chciałem buforować te dane po stronie klienta. Tak więc w oparciu o documentation here mogę użyć atrybutu ResponseCache
w metodzie akcji. Ten atrybut dodaje Cache-Control
nagłówek w odpowiedziAtrybut ResponseCache nie buforuje danych po stronie klienta
buforowanie odpowiedź odnosi się do określania nagłówków związanych z pamięci podręcznej na odpowiedzi HTTP dokonane przez działania ASP.NET MVC rdzenia. Nagłówki te określają, w jaki sposób maszyny klienta i pośrednie (proxy) mają buforować odpowiedzi na odpowiedzi na niektóre żądania (jeśli w ogóle). Może to zmniejszyć liczbę żądań klienta lub serwera proxy do serwera WWW, ponieważ przyszłe żądania z tej samej akcji mogą być obsługiwane z pamięci podręcznej klienta lub proxy z serwera proxy.
również
buforowanie odpowiedzi nie buforuje odpowiedzi na serwerze WWW. To różni się od wyjściowego buforowania, które buforowałoby odpowiedzi w pamięci na serwerze w starszych wersjach ASP.NET i ASP.NET MVC.
Tak to jest jak moja metoda działania wygląda
public class LookupController : Controller
{
[HttpGet]
[ResponseCache(Duration = 120)]
public IEnumerable<StateProvinceLookupModel> GetStateProvinces()
{
return _domain.GetStateProvinces();
}
}
potem wywołać metodę przy użyciu przeglądarki jako http://localhost:40004/lookup/getstateprovinces Oto nagłówki żądania i odpowiedzi
Zauważ, że odpowiedzi Nagłówki mają oczekiwane wartości Cache-Control: public,max-age-120
. Jednak jeśli odświeżysz stronę za pomocą F5 (przed 120 sekund), punkt przerwania debuggera w metodzie akcji GetStateProvince zawsze trafia. Oznacza to, że nie zawiera danych po stronie klienta.
Czy jest coś jeszcze, co należy zrobić, aby włączyć buforowanie po stronie klienta?
Aktualizacja Próbowałem używać IE, Chrome, a także POSTMAN bez powodzenia. Za każdym razem, gdy wpisuję adres URL w pasku adresu lub odświeżam klienta (czyli przeglądarkę lub listonosza), wywołuje metodę wezwania do działania.
@dotnetstep ma rację, również f5 (odświeżania strony) jest już broker cache po stronie klienta, co wiem. po prostu wprowadź adres w pasku adresu i wprowadź. że sposób, w jaki sprawdzam bufor cache'a – ergen
@ Próbowałem także z POSTMANem bez powodzenia – LP13
Nie wiem kto jest człowiekiem. wyjaśnijmy: spróbuj po prostu otworzyć URL w przeglądarce, zamiast odświeżać. refresh jest brokerem, po drugie, typ pliku jest ważny dla buforowania klienta. na przykład nie przechowujesz pamięci podręcznej o wielkości 1000 MB. buforujesz tylko .json, więc to nie ma znaczenia. wtedy jestem pewien, że pamięć podręczna będzie działała, gdy użyjesz adresu URL, takiego jak licalhost/lookup/getstateprovinces.json. skup się na rozszerzeniu i buforowaniu plików po stronie klienta. nawet jeśli dodasz nagłówek do swojej odpowiedzi, przeglądarka może nie znać Twojego pliku jako pliku statycznego z powodu rozszerzenia – ergen