최근 Ajax 요청이 기존 세션을 호출한 다음 해당 세션을 기반으로 일부 처리를 수행하는 문제가 발생했습니다. 세션이 적용되는 경우도 있고 그렇지 않은 경우도 있다는 것을 알았습니다.
세션은 db에 저장되므로, 서로 다른 서버에 접근하여 발생하는 세션 불일치 문제가 없습니다.
처음에는 varnish를 사용하여 페이지를 캐시한 줄 알았는데, php로 요청이 실행되지 않고 http 캐시를 사용하게 된 것입니다. 바니시를 제거한 후에도 여전히 이 문제가 발생합니다.
요청한 페이지를 다시 정리한 결과 페이지 헤더의 중국어 간체 및 번체 링크가 HTML 접미사를 사용하고 있는 것을 발견했습니다. 이로 인해 HTML이 캐싱되어 이 링크를 클릭하면 페이지가 생성될 수 있습니다. 헤더가 실제로 세션을 생성하지 않습니다. 당연히 이 캐시된 페이지의 Ajax를 얻기 위한 세션은 없습니다.
알겠습니다. 해결책은 다음과 같습니다.
1 세션 매개변수를 ajax로 가져와 모든 요청과 함께 가져오면 처리를 위해 세션에 의존할 필요가 없습니다.
2 html을 php로 변경합니다. 그러나 바니시나 다른 캐싱 기술을 사용하는 경우에도 위와 같은 문제가 발생할 수 있습니다. 따라서 세션에 의존하지 않고 첫 번째 방법을 사용하는 것이 가장 좋습니다.