2009-04-23 3 views
2

perl 생성 페이지가 있습니다. 이 페이지의 내용은 매 30 분마다 변경되므로 $ r-> set_last_modified()를 내용이 마지막으로 변경된 시간으로 설정합니다.Apache2 mod_perl Last-Modified 헤더가 무시되었습니다.

모두 정상적으로 작동하며 정확한 헤더가 브라우저에 도착하는 것을 볼 수 있습니다.

페이지를 새로 고치면 브라우저가 서버에 대한 요청에 올바른 "If-Modified-Since"헤더를 사용하지만 Apache2가이를 무시하고 전체 페이지를 다시 보냅니다.

Apache2가 올바르게 작동하고 "HTTP/1.x 304 Not Modified"로 응답하려면 어떻게합니까?

어떤 도움 (이하 "-마지막으로 수정"/ "수정 한 경우 --이후"같은 아파치 과정에서 정적 컨텐츠를 요청할 때 헤더가 올바르게 처리됩니다.)

감사합니다.

편집 : 내 기대가 잘못 되었나요? 필자의 펄 스크립트에서 인바운드 If-Modified-Since 헤더를 명시 적으로 처리해야합니까?

답변

2

아파치는 요청을 처리 할 때 마지막 수정 값을 저장하지 않습니다. 따라서 무언가가 수정되었는지 여부를 결정하려면 응용 프로그램을 실행해야합니다.

4

슬프게도 예, 귀하의 기대가 잘못되었습니다.

기본적으로 아파치에 "OK, 나는이 요청을 처리하고있다."라고 말하면, 아파치는 모든 것을 당신에게 책임진다. If-Modified-Since를 기리기 위해 요청을 받으려면 코드에 따라야합니다.

Perl 처리기에서 Apache가/실제로/의미하는 것이 무엇인지를 알 수있는 방법이 없으므로 이것이 올바른 행동입니다. 가장 좋은 방법은 백엔드 DB를 쿼리하는 것입니다. 레코드의 타임 스탬프 예를 들어 ....

+0

그래, 나는 그것이 맞는 것 같아요 :) – aidan

관련 문제