문제

웹 페이지에 대한 ETAG를 프로그래밍 방식으로 생성하는 좋은 방법은 무엇 이며이 연습이 권장됩니까? 일부 사이트에서는 ETAG를 끄는 것이 좋습니다. 다른 사이트는 수동으로 생성하는 것이 좋습니다. 일부 사이트는 기본 설정을 활성화하는 것이 좋습니다. 여기에서 가장 좋은 방법은 무엇입니까?

도움이 되었습니까?

해결책

Etags는 웹 사이트 생성기 앞에서 어떤 종류의 캐싱 메커니즘을 사용할 때 도움이됩니다. 브라우저 자체는 사용하지 않으며 "(IF)"또는 "AGE"헤더 스트러크, AFAIK 이후 수정된다.

어쨌든, 단순한 특성으로 인해 HTTP 헤더에게 ETAG를 제공하는 것은 문제가되지 않습니다. 많은 웹 서버가 단순히 파일의 위치와 파일의 타임 스탬프를 가져 와서이 데이터를 통해 MD5-Hash를 수행한다고 들었습니다.

예를 들어, 우리는 소프트웨어로 간단하지만 효과적인 ETAG를 구축했습니다. 모든 "콘텐츠 단위"(예 : html, jpegs, gif ...) 우리 소프트웨어의 고유 ID와 버전 번호가 있습니다 (예 : JPEG에는 ID "17"및 버전 "2"가 있습니다. . 따라서 ETAG는 단순히 문자열 "ID-Version"입니다. 여기서 : "17-2". 다음 변경으로 인해 "17-3"이므로 캐처가 변경 사항을 인식하고 새 컨텐츠 부분을 완전히로드하여 자체 캐시에 저장합니다.

그러나 아마도 URL과 타임 스탬프 (즉, 파일의 타임 스탬프)를 사용할 수도 있습니다.

다른 팁

내용의 해시를 생성하는 것이 좋습니다. md5($content).
또한 해시 충돌을 방지하기 위해 컨텐츠 요소의 ID를 추가 할 수 있습니다 (적절한 경우).

캐싱에 크게 의존 할 때에 태그가 의미가 있습니다. 그것들은 자원 상태 (예 : URL)의 훌륭한 지표입니다.

예를 들어, 당신이 사용한다고 가정 해 봅시다 Ajax 사용자의 최신 의견을 가져 오라고 요청하면 새로운 의견이 있는지 알고 싶습니다. ETAG를 변경합니다 알리다 새로운 콘텐츠를 적용하는 것은이를 확인하는 저렴한 방법입니다.

ETAG가 동일하다면 캐시를 유지할 수 있지만 그렇지 않으면 재건 할 수 있습니다.

Etags는 또한 Restful API 와도 많은 의미가 있습니다.

그것을 생성하는 것에 관해서 투기, 나는 당신이 원하는 거의 모든 것을 할 수 있다고 생각합니다. 타임 스탬프, 해시, 귀하/귀하의 응용 프로그램에 의미가있는 모든 것이 무엇이든.

방금 yslow를 발사했고 Etags에 대해 불평했기 때문에 약간의 연구를했습니다. 문제는 야후 블로그 (주석도 참조) 기본 ETAGS 구현은 파일 inode 번호 또는 NTFS 개정 번호 또는 해시의 일부로 똑같이 서버를 동일하게 사용하는 것을 사용한다는 것입니다. 이것은 빠르지 만 기본적으로 2 개의 다른 서버에서 동일한 파일이 동일한 ETAG를 갖지 못하도록 방지하고 브라우저와 다운 스트림 캐시 또는로드 밸런스를 모두 조입니다.

MD5 해시를 사용하려는 이전 제안은 좋은 일이지만, 그 자체로 성능 문제가되지 않도록해야합니다. 그 제안의 구현은 독자에게 남아 있지만, 이것이 나에게는 이것이 당신의 프레임 워크가 당신을 처리 할 수있는 일종의 것입니다.

나 자신을 위해, 나는 파일 타임 스탬프가 적절한 것 이상의 간단한 환경에 있기 때문에, 나는 방금 Apache에서 그것들을 끄고있다. FileETag none 내 .htaccess 파일에서. 이렇게하면 yslow가 종료되어 파일의 마지막 수정 날짜로 돌아가야합니다.

일반적으로 사용을 권장하지 않는 "사이트"는 Yahoo이며 일부 기본 웹 서버는 서버 농장에서 작동하는 ETAG를 자동으로 생성하지 않기 때문입니다. (Yahoo가 주장하기 위해 정확하고 정확합니다.)

그러나 단일 웹 서버가 있다면 괜찮습니다. 그렇지 않은 경우 웹 서버가이를 처리하고 적절하게 행동하는 방법을 확인하고 싶을 것입니다.

무파사,

Yahoo (및 Yslow)는 실제로 사용을 장려하지만 자동 생성 ETAG는 서버마다 다를 수 있다는 경고를 사용하면 서버마다 다릅니다.

아직 투표 할 수 없으므로 파일 경로 및 타임 스탬프의 해시 제안에 동의합니다 (또는 DB 컨텐츠로 표시되는 경우 테이블 이름 + 기본 필드 값 + 타임 스탬프).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top