먼저 생성 된 CSS에 적절한 캐싱 헤더를 사용하고 클라이언트가 요청할 때 CSS 원본의 유효성을 다시 검사하기 위해 ETag 헤더를 사용하십시오. 일부 빠른 설정 ETag 계산 알고리즘을 구현해야합니다 (예 : 사용자가 일부 설정을 변경하고 해당 값을 ETag로 반환 할 때마다 버전 필드 증가). 이 시나리오에서는 CSS가 사용자 에이전트 캐시에 저장되고 사용자가 F5 ETag를 누를 때에도 "변경 사항을 저장하고 저장하지만 실제로는 CSS를 생성하지 않고"각 페이지보기마다 재생성 "하도록 선택할 수 있습니다 클라이언트 측의 CSS가 여전히 유효한지 확인하는 데 사용됩니다.
물론, CSS는 일부 http 핸들러 (usercss.ashx 또는 이와 비슷한 것)에 의해 반환되어야합니다. 이 CSS에 대한 링크를 HTML 페이지에 포함 시키려면 캐시 된 콘텐츠 문제를 해결할 수있는 매개 변수를 추가해야합니다 (예 : '
). 내 경험에 따르면 사용자 CSS를 개별 리소스로 사용하도록 처리기를 사용하는 것이 좋습니다. HTML 페이지가 생성 될 때마다 HTML 페이지에 포함시키지 마십시오. 왜냐하면 마지막 경우에는 페이지가 생성 될 때마다 CSS를 다시 계산하거나 서버에 캐싱해야하기 때문에 두 경우 모두 다소 나쁜 아이디어입니다. 게다가,이 CSS는 다소 클 수 있습니다. 요청할 때마다 다운로드 할 이유가 없습니다.
"ETags는 브라우저에서 구성 요소를 다시 다운로드하지 않도록 설계되었습니다."- ETag는 서버 리소스가 CSS 내용을 재생성하는 데 드는 비용을 절약 할 수 있습니다. 일반적으로 ETag는 거의 즉시 계산됩니다. – Roman
CSS 생성에 소요되는 시간은 거의 없습니다. 게다가 CSS를 다시 생성하지 않으면 어떻게 ETag를 계산할 것입니까? – ctford
필자가 작성한대로 가능한 해결책은 사용자 스타일 (옵션) 버전을 유지하는 것입니다.이 버전은 사용자가 일부 옵션 (비즈니스 로직 책임)을 변경할 때마다 증가해야합니다. 이 버전은 ETag로 사용할 수 있으며 CSS 링크에 버전 매개 변수를 추가하여 '? v = version' 링크를 통해 변경 후 새 버전을 다운로드 할 수 있습니다. – Roman