2012-08-03 2 views
3

나는 WebDAV를 사용하여 파일의 ETag 속성을 기반으로 서버에 대한 불필요한 요청을 피하기 위해 캐시와 함께 서버의 파일과 폴더에 메타 데이터를 저장합니다.HTTP ETag 갱신하기

기본적으로 HEAD 요청을 보내고 ETag가 로컬에있는 것과 일치하는지 확인합니다. 그렇지 않으면 다른 속성을 검색하기 위해 더 크고 느린 PROPFIND 메서드를 보냅니다.

메타 데이터를 수정, 추가 또는 삭제할 때를 포함하여 파일이 수정 될 때마다 ETag가 변경된다는 생각에이 캐시를 구축했습니다. 클라이언트가 메시지를 표시 또는 멀리 변경 내용을 던질 수 밖에 될 수 있기 때문에

Etag입니다 변경하는 경우, WebDAV 서버가 변경되지해야합니다

그러나, 나는 최근에 그렇지 않은 것을 발견했습니다 본문 및 위치가 변경되지 않은 리소스의 ETag (또는 마지막으로 수정 된 시간)입니다. ETag는 본문의 상태 또는 리소스의 내용을 나타냅니다. 속성이 변경된 경우 비슷한 방법이 없습니다.

속성이 변경 될 때마다 캐시를 ​​무효화 이후 (RFC 4918, http://www.webdav.org/specs/rfc4918.html#etag, 강조 광산)

, 궁금 나에게 중요하다 : 수동으로있는 ETag를 갱신하기 위해 웹 서버에 지시 할 수있는 방법이 ?

답변

2

몇 가지 옵션이 있습니다. etag가 내용 (나쁜 아이디어)을 기반으로 생성되면, 더 어렵습니다. 이 솔루션에서는 속성이 변경되었을 때 업데이트 한 다른 태그 (p 태그)를 생성했으며이를 PROPFIND를 사용하여 쿼리 할 수있었습니다. 응답에서 X-PTag 헤더로 반환했습니다. etag가 PUT에서 무작위로 생성되면 동일한 데이터를 다시 PUT 할 수 있고 새로운 etag를 얻을 수 있습니다.

관련 문제