2009-10-05 5 views
3

고객이 ASP.NET 웹 응용 프로그램을 테스트 할 때 이상한 오류가 나타납니다. 장바구니에있는 품목의 수를 알려주는 카트 카운터가 각 페이지 상단에 있습니다. 그녀는 한 페이지에서 다음 페이지로 이동할 때이 숫자가 바뀌고 있다고보고합니다. 우리는 이것을 다시 만들 수 없습니다.기업 프록시가 전체 페이지를 캐시 할 수 있습니까?

기업용 프록시 서버가 전체 페이지를 캐싱하고 실제로 서버에 접속하지 않았을 가능성이 있습니까? 이것은 http의 준비 사이트이며 제작 사이트는 https입니다.

수정 버전 : 페이지가 HTTPS에서도 캐시됩니다. 쇼핑 카트 페이지의 완전히 캐시 된 버전을 보여줍니다. 사용자가 새로 고침 버튼을 클릭하면 현재 버전의 페이지가 있지만 새 버전은 캐시 된 버전이됩니다.

+0

앱에 nocache 및 다양한 "이 페이지를 캐시하지 마십시오"명령이 있습니까? –

+0

구체적으로는 아니지만 과거에는이 문제가 없었습니다. 동적 인 콘텐츠를 항상 프록시 서버에 알려야합니까? – JoshBaltzell

답변

2

IE에도이 동작이 발생할 수있는 설정이 있습니다. "도구"> "인터넷 옵션"으로 이동하십시오. '일반'탭에서 '검색 기록'아래에있는 '설정'을 클릭하십시오. "저장된 페이지의 최신 버전 확인"이 "자동"으로 설정되어 있는지 확인하십시오. 이것은 기본값입니다.

나는 이것을 "Never"로 변경 한 사용자가 있었는데 왜 그가 항상 오래된 콘텐츠를 보았는지 궁금해하고있었습니다. :)

+0

방금 ​​문제가 있는지 클라이언트에게 이메일로 보냈습니다. IE6이 설치된 컴퓨터에서이 설정을 변경하여이 문제를 재현 할 수있었습니다. 좋은 생각! – JoshBaltzell

+0

이것은 정확하게 문제가되었습니다. 사용자는 자신의 IE가 웹 페이지의 새 버전을 얻지 못하도록 설정했습니다. 그런 식으로 설정된 이유는 결코 알지 못할 수도 있습니다. 정보를 제공해 주셔서 감사합니다. 이것은 분명히 많은 시간을 절약 해주었습니다. – JoshBaltzell

3

중간 프록시 (회사 또는 기타)가 페이지를 캐싱하는 것은 가능합니다. 페이지의 카트 번호를 설명하는 방법을 모르겠지만 으로 변경됩니다. 당신이 어떤 캐싱이 발생하는 것을 원하지 않는 경우, 원하지 않는 요청할 각과 함께 적절한 HTTP 헤더를 보내 캐시 :

Cache-Control: private, no-store, max-age=0 
Expires: <some date in the past> 
Pragma: no-cache 

첫 번째 줄은 위의 HTTP 1.1 클라이언트이고, 두 번째 2는 HTTP 1.0 클라이언트의 경우. 모든 세부 사항은 HTTP 1.1 프로토콜 사양의 섹션 14.9을 확인하십시오.

+0

프록시가 HTTP 만료 헤더를 준수해야합니까? –

+0

이 값은 프록시 동작을 제어하기위한 것이므로 버그가 아닙니다. –

+1

@Dominic Rodger 네, 사양을 따르고 있다면 그렇습니다. 하지만 그것은 명예 시스템입니다 : (확률은 악의적 인 프록시를 다루지 않습니다. :) – Asaph

관련 문제