2009-03-14 4 views
2

단일 페이지로 볼 수있는 간단한 블로그를 작성 중이므로 (점진적으로 작성되므로 걱정하지 마십시오.) 페이지에 HTML을 반환하는 AJAX 요청을 보내고 있습니다.AJAX 및 Javascript 캐시 효율성 질문

나중에 정보 (HTML)를 저장/캐시하여 나중에 DOM에 추가하는 가장 효율적인 방법은 무엇입니까?

얼마나 많은 정보 (사용자가 돌아올 수있는 오래된 항목)가 감히 나는 JavaScript를 사용하여 클라이언트 측에 전체 기사에 대해 HTML이 포함되어 있다는 것을 고려하여 저장합니까? 어쨌든 AJAX 요청을 보내지 않고 HTML을 반환하도록 클라이언트 브라우저가 AJAX 응용 프로그램의 상태 (예 : getHTML.php? article = 4)를 캐시하는지 확인하면 JavaScript로 저장할 필요가 없을 수도 있습니다. 이미 한 번 요청되었습니다)? 사전에

감사합니다,

빌렘

답변

1
난 당신이 DOM 자체 내부 어딘가에를 캐시하는 것이 좋습니다 것입니다

, 하나, 단지 그들 또는 그들의 용기 (숨길 자연 장소에서 또는 "캐시"divvisibility: hidden). DOM 주위로 이동하여 (예 : final_container.appendChild(cache.removeChild(cached_item))) 필요에 따라 표시하십시오. 캐시 된 정보를 적당하게 처리 할 때 메모리 효율, 속도 및 단순성면에서 이점을 얻을 수 있습니다.

AJAX 응답 헤더의 적절한 캐시 지시문을 사용하면 브라우저는 일반 페이지처럼 AJAX 응답의 캐싱을 수행 할 수도 있습니다.

아이디어를 얻으려면 this Browser-Side Cache article을 확인하십시오.

2

브라우저가 이러한 종류의 요청을 캐시하도록하는 것이 좋지 않겠습니까?

getHTML.php?article=4 

이러한 요청에 대해 바퀴를 재발 명하는 것은 바보입니다.

캐시해야 할 유일한 데이터는 입니다. 사용자가을 알면 사용자가 보도록 전환합니다. 예를 들어 Digg - 자바 스크립트에서 객체의 형식으로 각 제출에 대한 주석을 캐시합니다. 사용자가이 주석을보고 싶을 때 함수는 문서에 올바른 형식으로 문서를 삽입하기 만하면됩니다. 그러나 모든 주석이 캐시되지는 않습니다. 가장 많이 본 것들만 볼 수 있습니다.

표시/숨기기를 "전환"할 수있는 모든 정보는 캐싱 할 수 있으며 미리로드 할 수도 있습니다. 위에 지적한대로 visibility: hiddendisplay:none 기술을 사용할 수도 있습니다. 그런 식으로 DOM을 DOM으로 조바꿈하고 필요한 경우 해당 요소를 표시하거나 숨길 수 있습니다.

0

게리 (Gary)와 동의합니다. 실제로이 작업을 위해 노력하고 싶다면 질문 할 수 있습니다. 네가 정말 그걸로 끝까지 가면 네가 좋은 이유가있을거야.

정말로 원한다면 각 기사/페이지/무엇이든 HTML 컨텐트가 포함 된 매우 가벼운 JSON을 포함하는 별도의 JavaScript 파일로 캐싱 할 수 있습니다.