2010-11-24 6 views
0

서버에 대한 많은 XHR 호출을 갖는 웹 페이지와 서버에 대한 많은 XHR 호출을 다시 포함하는 A iframe을 고려하십시오. 이 호출 중 많은 수가 동일합니다 (중복). 단일 통신 인터페이스 (예 : 자바 스크립트 객체의 메소드 세트)가 있습니다.프로그래밍 방식으로 XHR/Ajax 응답 캐싱 및 무효화

서버 호출을 최적화하는 방법은 무엇입니까? 응답을 캐시 할 수 있습니까? (응답을 변경할 수있는 일부 동작이 발생하면 저장된 응답을 무효화 할 수 있습니다.) 또한이 캐시는 페이지를 새로 고친 후 지워야합니다. 그러한 구성 요소/기법을 사용할 수 있습니까?

감사합니다,

답변

-1


나치 켓 메모이 제이션의 일부 형태. 참고 : XHR 구현을 수용하기 위해 다음 코드를 변경해야합니다. 코드를 제시하지 않았으므로 가정을해야했습니다.

var cacheXHRWrapper = function (url , handler) { 

    var cache = {}; 
    var queued = {}; 
    var pending = {}; 

    if (cache[ url ]) { 

     handler(cache[ url ]); 

    } else { 

     queued[ url ] || (queued[ url ] = []); // I know, call me lazy. 
     queued[ url ].push(handler); 

     if (!pending[ url ]) { 

     // might want to adjust this to comply to your XHR implementation 
     XHR_IMPL.request(url , function (response) { 

      // cache response 
      cache[ url ] = response; 

      // serve all queued handlers. 
      var fn = queued[ url ].shift(); 
      while (fn) { 
       fn(response); 
       fn = queued[ url ].shift(); 
      } 

     }); 

     pending[ url ] = true; 

     } 

    } 
} 

보너스는 이미 실행중인 핸들러 (URL 별)를 요청합니다.

관련 문제