>  기사  >  백엔드 개발  >  캐시의 http 200에서 이상한 문제가 발생합니다.

캐시의 http 200에서 이상한 문제가 발생합니다.

WBOY
WBOY원래의
2016-09-05 08:59:541204검색

사용 브라우저: PC에서는 크롬, 휴대폰에서는 다양한 브라우저
같은 URL 주소로 접속: http://xxx.aaa.bbb.com/ship.html

테스트 환경에서: 일부 학생들이 이 주소를 다시 방문했을 때 페이지에 마지막으로 방문했을 때의 데이터가 계속 표시되어 최신 데이터가 아니었습니다. http를 확인하면 다음과 같은 몇 가지 중요한 매개변수가 있습니다: 200, 캐시에서. 그러나 일부 학생들이 이 주소를 방문할 때마다 페이지에 최신 데이터가 표시됩니다. 몇 가지 중요한 http 매개변수를 확인할 때 캐시에서 표시되지 않습니다.

캐시에서 이해는 되는데 왜 같은 서버에 접속하면 캐시에서 나오는 학생도 있고, 접속할 때 서버에서 최신 페이지 데이터를 로드하는 학생도 있는 게 이해가 안 되네요. 이것이 무엇과 관련이 있고, 어떤 영향을 미치나요?

참고:

  • 공식 온라인 환경에서는 이런 문제가 발생하지 않고, 접속도 정상이며, 매번 서버에서 최신 페이지 데이터가 로딩됩니다.

  • ship.html은 단순한 정적 페이지가 아니라 의사 정적 페이지입니다.

  • 다음 헤더가 설정되었습니다:
    <meta http-equiv="Expires" content="-1">
    <meta http-equiv="Cache-Control" content="no-cache">
    <meta http-equiv="Pragma" content="no-cache">

답글 내용:

사용 브라우저: PC에서는 크롬, 휴대폰에서는 다양한 브라우저
같은 URL 주소로 접속: http://xxx.aaa.bbb.com/ship.html

테스트 환경에서: 일부 학생들이 이 주소를 다시 방문했을 때 페이지에 마지막으로 방문했을 때의 데이터가 계속 표시되어 최신 데이터가 아니었습니다. http를 확인하면 다음과 같은 몇 가지 중요한 매개변수가 있습니다: 200, 캐시에서. 그러나 일부 학생이 이 주소를 방문할 때마다 페이지에 최신 데이터가 표시됩니다. 몇 가지 중요한 http 매개변수를 확인할 때 캐시에서 표시되지 않습니다.

캐시에서 이해는 되는데 왜 같은 서버에 접속하면 캐시에서 나오는 학생도 있고, 접속할 때 서버에서 최신 페이지 데이터를 로드하는 학생도 있는 게 이해가 안 되네요. 이것이 무엇과 관련이 있고, 어떤 영향을 미치나요?

참고:

  • 공식 온라인 환경에서는 이런 문제가 발생하지 않고, 접속도 정상이며, 매번 서버에서 최신 페이지 데이터가 로딩됩니다.

  • ship.html은 단순한 정적 페이지가 아니라 의사 정적 페이지입니다.

  • 다음 헤더가 설정되었습니다:
    <meta http-equiv="Expires" content="-1">
    <meta http-equiv="Cache-Control" content="no-cache">
    <meta http-equiv="Pragma" content="no-cache">

서버가 캐시 제어를 명확하게 정의하지 않으면 클라이언트마다 캐싱 메커니즘이 다를 수 있습니다.
사용자가 항상 최신 데이터를 얻을 수 있도록 하려면 다음과 같이 메타 태그를 설정하면 됩니다.

<code class="html"><meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" /></code>

메타 태그 설정은 html 페이지에만 유효합니다. 더 좋은 방법은 http 응답 헤더에 캐시 제어를 설정하는 것입니다.

<code class="http">Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0</code>

php는 http 응답 헤더 코드를 설정합니다:

<code class="php">header("Cache-Control: no-cache, no-store, must-revalidate"); // HTTP 1.1.
header("Pragma: no-cache"); // HTTP 1.0.
header("Expires: 0"); // Proxies.</code>

캐싱을 사용하면 페이지 로딩 속도를 높이고 리소스 소비를 줄이는 데 도움이 될 수 있으므로 특정 상황에 따라 캐싱 전략을 조정해야 합니다.

참고자료

http://stackoverflow.com/ques...
http://stackoverflow.com/ques...

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.