Przedstaw problemSkonfiguruj MVC.NET OutputCache powrotu 304 Not Modified jeśli ActionResult nie zmieniła
powodzeniem skonfigurowana pamięć podręczną przeglądarki, aby powrócić zapisaną odpowiedź, jeśli serwer wskazuje 304 Not Modified
. Oto config:
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<add
name="TransparentClient"
location="Client"
duration="0" />
</outputCacheProfiles>
</outputCacheSettings>
</caching>
web.config jest doskonały i ustawia Cache-control:private, max-age=0
tak, że:
- Przeglądarka będzie buforować odpowiedzi,
- będzie zawsze walidacji cache, a
- zwróci buforowaną odpowiedź, jeśli serwer odpowie 304.
Problemem jest to, że nasze działania zawsze reagować MVC.NET 200 i nigdy 304.
Problem
Jak możemy skonfigurować buforowanie wyjścia do zwróci 304 Not Modified gdy ActionResult nie zmienił?
- Czy istnieje jakieś wbudowane sprawdzanie poprawności pamięci podręcznej w MVC.NET?
- Jeśli tak nie jest, w jaki sposób możemy uruchomić nasz mechanizm sprawdzania pamięci podręcznej?
Rzut na miarę będzie prawdopodobnie wymagał filtra akcji z ETag lub Last-Modified.
Screen Shots
Oto zrzut ekranu pokazujący Skrzypek na brak 304.
318 jest SHIFT + Refresh.
332 to odświeżenie, którego oczekiwaliśmy, spowoduje 304. Problem.
Search and Research
ASP.NET MVC : how do I return 304 "Not Modified" status? wspomina powrocie do 304 z poziomu działania. Nie zapewnia to sposobu, aby OutputCache dokładnie odpowiadał za pomocą 304.
Working with the Output Cache and other Action Filters pokazuje, jak zastąpić OnResultExecuted, co pozwoli na dodawanie/usuwanie nagłówków.
Prawdopodobnie oznaczało # 332 ... – haim770