단일 페이지 앱을 개발 중이며 서버에 대한 요청이 많습니다. 한 가지 큰 반응 (20-30kb와 같은)이 있으며이 반응은 매주 한 번 바뀌며 eTag를 기반으로 브라우저에 응답을 캐시하고 싶습니다. ETag는 서버에서 올바르게 설정되지만 브라우저는 다음 요청시 eTag를 다시 보내지 않습니다.jQuery에서 eTag 헤더를 설정하는 방법은 무엇입니까?
캐시 제어 : 개인 콘텐츠 - 여기
는 서버 응답입니다 : 여기$.ajax({ url: 'Admin/GetActiveConfiguration', type : 'GET', ifModified: true, success: function (data) { that.configuration = $.parseJSON(data); that.setRoles(); that.setTitleAndIcon(); that.initializeChat(); callback(); //that.loadViews(Object.keys(window.params)[0]); } });
내 클라이언트 코드입니다 : 여기 내 서버 코드 인코딩 : gzip 콘텐츠 길이 : 6544 콘텐츠 형식 : text/html; 문자셋 = UTF-8 날짜 : 2014년 (화) (13) 월 그리니치 표준시 14시 19분 52초 의 ETag : 2014년 5월 13일 17시 1분 2초 서버 : 마이크로 소프트 IIS/8.0 비바리 : 수락 - 인코딩을 X-ASPNET을 -version : 4.0.30319 X-AspNetMvc 버전 4.0 X-전원이 저자 : ASP.NET X-있는 SourceFiles???? = UTF-8 B = 여기 QzpcUHJvamVjdHNcZUNvbW1lcmNlXE1pY3JvaW52ZXN0IGVDb21tZXJjZSBQcm8gTmV3XE1pY3JvaW52ZXN0IGVDb21tZXJjZSBQcm8gTmV3XEFkbWluXEdldEFjdGl2ZUNvbmZpZ3VyYXRpb24 =public string GetActiveConfiguration() { var requestedETag = Request.Headers["If-None-Match"]; var responseETag = layoutRepository.GetActiveConfigurationVersion().ToString(); if (requestedETag == responseETag) { Response.StatusCode = 304; return ""; } Response.Cache.SetCacheability(HttpCacheability.ServerAndPrivate); Response.Cache.SetETag(responseETag); return layoutRepository.GetActiveConfiguration(); }
인 다음 클라이언트 요청 :
수락 : / 수락 - 인코딩 : gzip을, 폐, SDCH 적용 여부-언어 : EN-GB, 욕실, Q = 0.8 캐시 - 제어 : 아니 - 캐시에게 연결 : 연결 유지 쿠키 : I 'llhideThoseOnPurpose :) 호스트 : localhost : 61061 Pragma : no-cache 참조 자 : localhost 사용자 에이전트 : Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, 게코) 크롬/34.0.1847.131 사파리와 같은/537.36 X-요청-으로 : XMLHttpRequest를
내가 무슨 일을하고 있는가?