2011-11-12 4 views
0

사용자가 내 사이트의 버튼을 클릭하면 페이지의 특정 부분이 새로 고쳐 지지만 전체 섹션을 렌더링하는 데 시간이 걸립니다. 전체 섹션이 끝날 때까지 기다리는 것이 아니라 실시간으로 섹션의 파트를 표시/출력 할 수 있습니까? html 콘텐츠에 대한 ajax 요청으로 보내는 경우 어떻게해야합니까? 감사합니다출력 버퍼링 및 AJAX

답변

0

AJAX 호출 (jQuery를 사용하는 경우)에서 cache: true을 설정하는 것이 좋습니다. 그리고 어떤 방법 으로든 HTTP 응답 헤더를 설정하려고 할 것입니다. Here are some examples.cache-control 헤더와 expires 등을 설정하면 변경되지 않은 경우 AJAX 요청이 캐시에서로드됩니다. 이것은 크게 속도를 올릴 것입니다.

빠른 예 :

if (!headers_sent()) { 
    // seconds, minutes, hours, days 
    $expires = 60*60*24*14; 
    header('Pragma: public'); 
    header('Cache-Control: maxage=' . $expires); 
    header('Expires: ' . gmdate('D, d M Y H:i:s', time() + $expires) . ' GMT'); 
} 

참고 :이 그냥 GET, POST 요청 작동하지 않습니다.

+0

내가 사용자의 브라우저에있는 특정 HTML 내용을 잡을 수 있습니까? 어떻게하면 httpd.conf 파일로이 작업을 수행 할 수 있습니까? 또한 내 콘텐츠가 동적이어서 캐싱이 적절한 지 확실하지 않습니다. – Ben

+0

가능합니다. .htaccess 파일을 수정할 권한이 있습니까? 나는 아파치 설정을 직접 수정하는 대신에 이러한 설정을 변경한다고 말할 것이다. 어느 쪽이든, 내가 내 대답에 넣은 링크를 확인하십시오 (여기에 "몇 가지 예가 있습니다"). –

0

마찬가지로 AJAX 요청을 캐싱하는 것이 좋습니다. 게다가, 내가 생각하기에 애플리케이션을 더 빠르게 보이게하려면 AJAX로 콘텐츠를 다시로드하면서 사용자에게 progressbar을 표시하는 것입니다.

+1

새로운 HTML5''태그를 사용할 수도 있습니다.) – ComFreek

+0

hmmm ... 그렇다면 아약스를 통해 처리되는 동안 콘텐츠를 표시 할 방법이 없습니까? – Ben

+0

그 사실을 알고 있지 않다면, 아무 전문적인 사이트를위한 클라이언트의 사이트를위한 것이라면 HTML5를 사용하지 말고, 아직 충분히 지원하지 못한다면 –

0

Pagelets 기술을 구현할 수 있습니다.

index.html 
    Ajax -> load content from PHP script which outputs the navigation bar 
    Ajax -> load content from PHP script which outputs the body 

을 그리고 여러 가지 다른 아약스 사이트의 각각 다른 부분을로드 호출이 : 기본적으로 아래 같은 방법으로이 일을 할 수있다. 그러나 이것은 사용자의 브라우저가 만들어야하는 HTTP 요청의 양을 증가시키는 단점이 있습니다.

다른 부분이 페이지의 나머지 부분과 별도로 생성 될 수 있지만 이것은 추정됩니다. 모든 콘텐츠를 동시에 생성해야하는 경우이 기술을 사용하지 않아도됩니다.

이 ("BigPipe"라는 이름의 페이스 북 프로젝트) 좋은 읽기입니다 : http://www.facebook.com/note.php?note_id=389414033919

관련 문제