2011-10-19 4 views

답변

7

이것은 페이지/이미지/사용자의 캐시에서 가져온 것이 아닌지 확인하는 것일 수 있습니다. 매번 링크가 다른 경우 브라우저가 캐시가 아닌 서버에서 가져와 최신 버전인지 확인합니다.

사이트를 통해 사람들의 진행 상황을 추적 할 수도 있습니다. 간단한 이야기로 가장 잘 설명됩니다.

  1. 사용자가 example.com을 방문합니다. 모든 링크에는 동일한 난수가 부여됩니다 (4라고 가정 해 봅시다).
  2. 사용자가 새 창/탭에서 링크를 열면 링크는 page2.php? rnd = 4입니다. 이 페이지의 모든 링크에는 임의 번호 7이 부여됩니다.
  3. 사용자는 원래 탭이나 새 탭에서 page3.php에 대한 링크를 클릭 할 수 있으며 서버의 분석 소프트웨어는 rnd = 4 또는 rnd = 7.

우리가 할 수있는 일은 가능성을 제시하는 것입니다. URL에는 rnd =를 넣을 표준 이유가 없으며 서버 소프트웨어를 보지 않고도 웹 사이트 디자이너의 동기를 알 수 없습니다.

4

거의 언제나 캐시 버스터 팅입니다.

6

Internet Explorer 및 다른 브라우저는 이미지 URL을 읽고 이미지를 다운로드 한 다음 캐시에 저장합니다.

응용 프로그램에서 이미지를 정기적으로 업데이트하려고하므로 사용자가 캐시 된 이미지를 보지 못하도록하려면 해당 URL이 매번 고유해야합니다.

따라서 임의의 문자열을 추가하면 매번 고유 한 문자열이 추가되어 캐시에 다운로드됩니다.

2

다른 사람들에 의해 제안되었습니다. 이러한 종류의 동작은 대개 동적 내용 데이터를 반환하는 페이지를 호출 할 때 캐싱 문제를 피하기 위해 사용됩니다.

예를 들어 "mysite.com/CurrentUserData"와 같은 현재 사용자 정보를받는 페이지가 있다고 가정 해보십시오. 이제이 페이지에 대한 첫 번째 호출에서 예상대로 사용자 데이터가 반환되지만 타이밍 및 캐싱 설정에 따라 두 번째 호출에서 예상 데이터가 업데이트되었을지라도 동일한 데이터가 반환 될 수 있습니다.

캐싱의 주된 이유는 물론 빈번한 요청의 속도를 최적화하는 것입니다. 그러나 이것이 필요하지 않은 경우에는 임의의 값을 쿼리 문자열 매개 변수로 추가하는 것이 널리 사용되는 솔루션으로 알려져 있습니다.

그러나이 문제를 해결할 수있는 다른 방법이 있습니다. 예를 들어 javascript/JQuery를 사용하여 Ajax 요청을하는 경우. 호출시 캐시를 false로 설정할 수 있습니다.

도큐멘트를로드 할 때 페이지 호출을 모두 변경할 수 있습니다 ...

$.ajaxSetup({cache: false}}); 

당신이 MVC 응용 프로그램 작업을 수행하는 경우, 심지어 같은 속성으로 제어 동작 방법에 대한 캐싱을 사용하지 않도록 설정할 수 있습니다 ... 빠른 복사 및 붙여 넣기에

[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")] 
public ActionResult NonCacheableData() 
{ 
    return View(); 
} 

(감사 here)

IIS에서 설정을 적용해도 동일한 영향을 주도록 신청할 수 있습니다. 아직까지는 아직까지 그렇게하지 않았습니다.

관련 문제