여러 개의 쿼리 문자열 변수를 사용하여 이미지를 제공하는 스크립트가 있습니다. 또한 IIS 7.5에서 URL 재 작성을 사용하고 있습니다. http://mydomain/Picture.aspx?group=ajfhajkfhal&id=44&thumb=thumb.jpg 또는 http://mydomain/Picture.aspx?group=ajfhajkfhal&id=44스크립트를 통해 제공되는 이미지 캐시
가 나는 그들이 때 캐시 JPG 이미지에 IIS 캐싱 규칙을 추가 : http://mydomain/pictures/ajfhajkfhal/44/thumb.jpg 또는 http://mydomain/pictures/ajfhajkfhal/44.jpg
이 가 다시 작성 :
그래서 이미지는이 같은 URL이 요청했다. 이것은 디스크의 실제 이미지 인 내 이미지와 함께 작동합니다. 이미지가 스크립트를 통해 제공되면 캐시되지 않고 항상 스크립트를 통해 이미지가 요청됩니다.
이미지가 자주 변경되지 않으므로 캐시를 적어도 30 분 (또는 파일 변경까지) 보관하는 것이 가장 좋습니다.
내 웹 사이트에 .NET/C# 4.0을 사용하고 있습니다. 나는 C#에서 몇 가지 캐시 옵션을 설정하려했지만 내 정적 이미지가 제대로 캐시되는 동안 이러한 이미지 (클라이언트 측)를 캐싱하는 방법을 찾지 못하는 것 같습니다.
EDIT 다음 옵션을 사용하여 클라이언트 측에서 이미지를 캐시합니다. 여기서 'fileName'은 디스크의 이미지 파일 이름입니다.), 즉를 지적
context.Response.AddFileDependency(fileName);
context.Response.Cache.SetETagFromFileDependencies();
context.Response.Cache.SetLastModifiedFromFileDependencies();
context.Response.Cache.SetCacheability(HttpCacheability.Public);
context.Response.Cache.SetExpires(DateTime.Now.AddTicks(600));
context.Response.Cache.SetMaxAge(new TimeSpan(0, 5, 0));
context.Response.Cache.SetSlidingExpiration(true);
context.Response.Cache.SetValidUntilExpires(true);
context.Response.ContentType = "image/jpg";
편집 2 덕분에, 그것은 참으로 아주 어리석은 실수였다. 지금부터 30 분으로 변경했습니다 (DateTime.Now.AddMinutes (30)).
하지만 문제가 해결되지 않습니다. Firefox에 문제가 있다고 생각합니다. Firebug를 사용하여 각 요청을 추적하고 어떻게 든 근본적으로 잘못된 일을하고 있다고 생각합니다. 내 페이지가 항상 "200 (OK)"을 반환하는 동안 일반 이미지 (캐시되고 정적 인)는 응답 코드 "304 (Not Modified)"를 돌려줍니다. 당신이 "스크립트"을 의미하는 것은 당신의 Picture.aspx의 코드 인 경우
alt text http://images.depl0y.com/capture.jpg
흠, 파일이 다음 캐시 서버 측을
,하지만 난 이미지가 클라이언트를 캐시 할 사랑합니다 (
TimeSpan.FromMinutes
이new TimeSpan(...)
보다 더 많은 읽을 수도 있습니다.) :는 이러한 시도 측면 (브라우저에서 활성화 된 경우), 이제는 정적 이미지 만 캐시하는 것처럼 보입니다. –
@Wim - 일부 HTTP 헤더를 지정하여 클라이언트 측 캐싱을 사용할 수 있습니다. 이 작업은 ASP.NET에서 쉽게 수행 할 수 있습니다. 필자는 대답을 편집하여 방법을 보여줍니다. – Venemo
@ 베네모,이게 내가 시도한거야. 하지만 어쨌든 내 파이어 폭스는 기본 캐시 설정을하는 동안 모든 이미지를 다시로드합니다. 내가 볼 때 : 캐시 및 내 이미지가 캐시되어 있는지 확인, 그들은 거기에 있습니다. Firefox는 캐시 된 경우에도 항상 이미지를 다시로드합니다. 클라이언트 쪽을 캐시하는 데 사용하는 옵션을 표시하기 위해 제 질문을 편집했습니다. 나는 이것이 어떻게 든 브라우저 일이라고 생각한다. –