내 출력 캐싱이 예상대로 작동하지 않습니다. 내 웹 사이트의 기본 페이지를 반환하는 컨트롤러 메서드입니다. 내가 40secs 위해 캐시 된 한 - 내가 처음에 대한 엔드 포인트를 칠 때 나는이 문제OutputCache가 올바르게 작동하지 않습니다 -> ASP.NET MVC5
먼저
이
[OutputCache(Duration = 40, Location = OutputCacheLocation.ServerAndClient, VaryByParam = "none")]
public async Task<ActionResult> Index(){
......
}
(테스트> 라이브에서 훨씬 이상 캐시) 서버에서 올바르게 캐시 된 다음 예상대로 다음 응답 헤더를 반환합니다.
status:200
Cache-Control:"private, max-age=40, s-maxage=0"
새 브라우저 탭을 열고 5 초 후에 동일한 끝점에 붙여 넣을 때. 서버로 이동하여 내용과 다음 헤더가있는 200을 반환합니다.
status:200
Cache-Control:"private, max-age=63622944145, s-maxage=63622944105"
이것은 나에게 맞지 않습니다. If-modified-since 헤더를 사용하여 서버에 요청을 보낼 것으로 예상했습니다. 캐시 된 응답이 헤더의 시간 이후에 다시 작성된 경우 304 + 내용을 반환합니다 (304). 따라서이 경우 서버 캐시가 다시 작성되지 않으므로 304를 반환해야합니다. 또한 최대 수명이 너무 길기 때문에 그것은 현재 유효하지 않으며 따라서 즉시 부실로 간주됩니다. 그래서 내가 뭘 잘못하고 있니?
둘째
내 색인 방법에 중단 점을 넣어 내 브라우저에서 엔드 포인트를 기록했다. 처음으로 인덱스 끝점에 도달했을 때 중단 점에 도달했습니다. 엔드 포인트에 대한 후속 요청은 예상대로 다음 40 초 동안 중단 점에 도달하지 않습니다. 그러나 브라우저에서 내 끝점에 "/"를 추가하면 캐시를 무시하는 중단 점에 도달합니다. 이 문제를 어떻게 피할 수 있습니까?
질문, URL에 'http://www.example.com'와 'http://www.example.com/'의 후반에 대해서 /는 다른 페이지입니다. Web.Config에 URL 재 작성 모듈이 있어야 모두를 똑같이 처리 할 수 있습니다. 아래에서 내 대답을 수정하겠습니다. – kodikas