2011-09-15 5 views
2

jQuery와 Ajax를 사용하여 페이지를 다시로드하지 않고 사이트 내용을 변경하는 사이트가 있습니다. 이 사이트에는 자주 변경되는 내용이 포함되어 있습니다. 하지만 어떻게 든 페이지가 캐시에 저장되어 변경 사항을 표시하지 않습니다.URL 뒤에 임의의 숫자 추가하기

브라우저를 METAs 및 PHP와 같은 캐시에 저장하지 않도록 여러 가지 시도를했습니다. 그러나 그것은 작동하지 않습니다. (그것은 내 코드 아니라

window.location.hash = $(this).attr('href').substr(0,$(this).attr('href').length-5); 

로 발견 :

나는 페이지가 항상 내가처럼에 임의의 숫자를 추가하는 방법에 대한 생각과 동일한 URL을 가지고, 그것은 사실과 관련이있다 생각 일부 googlin)하지만 이것은 URL에 클릭 한 링크 ID 만 추가합니다. 임의의 숫자를 추가하려면 "Math.random()"을 어디에 넣어야할지 모르겠습니다.

희망을 도울 수 있습니다. 당신이 jQuery의 AJAX 기능을 사용하는 경우

+1

내가 도움이 될 것 해시에 추가 생각하지 않는다, 그것은 쿼리 문자열에있을 필요가있다. – duncan

+1

이것은 http 캐싱 목적을 상실합니다. http 헤더를 수정하기 전에 변경해야합니다. [Wikipedia의 HTTP 헤더 필드 목록] (http://en.wikipedia.org/wiki/List_of_HTTP_header_fields). –

+1

조각을 서버로 보내지 않습니다. 난 당신이 당신의 URL (일반 URL 매개 변수) 뒤에 "? ts ="+ (+ (new Date))와 같은 것을 넣고 싶다고 생각한다. – npup

답변

7

그냥 cache : false을 사용하십시오. jQuery는 자동으로 URL 끝에 타임 스탬프를 추가하여 Ajax 요청이 캐시되지 않도록한다. .ajax()

캐시 기본에 대한 API를 참조 인용

: false로 설정하면 사실, dataType와 '스크립트'와 'JSONP'

에 대해 false를,이 요청 강제로 페이지를 할 수 없습니다 브라우저에서 캐시합니다. 캐시를 false로 설정하면 쿼리 문자열 매개 변수 "_ = [TIMESTAMP]"가 URL에 추가됩니다.

  1. 이후의 모든 아약스 요청에 대해 전 세계적으로 사용하지 않도록 캐싱

    . 요청에 따라 .ajaxSetup()

    $.ajaxSetup({ 
        cache: false 
    }); 
    
  2. 안 캐싱을 참조하십시오. 참조 .ajax()

    $.ajax({ 
        url: "test.html", 
        cache: false, 
        success: function(html){ 
        $("#results").append(html); 
        } 
    }); 
    
+0

감사합니다. 나는 그것을 몰랐다! $ (document) .ready .... 뒤에 이걸 넣어야합니까? – Mausoleum

+1

예, 당신은 할 수 있지만 당신은 사용할 수 있습니다. $ .ajaxSetup()'. 복수의 DOM 준비 핸들러가있는 경우, 이것을 js 파일의 선두 행에 두는 것. –

+2

나는 당신의 답을 upvoted지만, 이것이 트래픽을 증가 시킨다는 것을 아는 것이 중요합니다. _often_ 변경이 항상 _ 변경을 의미하지 않고 응답이 순수한 http 헤더 응답보다 많으면 (대부분은), If-Modified-Since와 같은 ETag를 사용하여 많은 트래픽을 절약 할 수 있습니다. Http는 눈을 만나는 것보다 제공 할 것이 많습니다. –

0
window.location.hash = $(this).attr('href') 
          .substr(0,$(this).attr('href').length-5) 
          + Math.random(); 
3

는 페이지의 상단에 $.ajaxSetup({ cache: false }) 설정을 시도하고 jQuery를 당신을 위해 그것을 알아서.

+0

이 조언을 해 주셔서 감사합니다. – Mausoleum

2

대부분 했나요처럼, 당신은 jQuery를 cache 매개 변수를 사용한다, 그러나 당신의 정보를, 그것은 종종 Math.random하지만를 사용하지 않는 수행 꽤 많이 보장 시간 값입니다 new Date().valueOf()와 독특한.

0

최선의 선택은 요청에 타임 스탬프를 사용하는 것입니다

window.location.hash = $(this).attr('href') 
          .substr(0,$(this).attr('href').length-5) 
          + timestamp; 
관련 문제