2011-11-12 21 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ファイルを変更するアクセス権がありますか?私は、これらの設定をApacheの設定を直接変更する代わりに変更すると言うでしょう。いずれにしても、私の答えに入れたリンクをチェックしてください(ここにはいくつかの例があります)。 –

0

このように、AJAXリクエストをキャッシュするのは良い選択です。それ以外にも、アプリケーションをより速く見えるようにするには、AJAXでコンテンツを(再)ロードしている間にユーザーにprogressbarを表示するだけです。

+1

また、新しいHTML5の ''タグを使用することもできます;) – ComFreek

+0

hmmm ...それで、ajaxで処理中のコンテンツを表示する方法はありませんか? – Ben

+0

それは私が気づいていない、いいえ –

0

ページレット手法を実装できます。基本的に、あなたは以下のように、方法でこれを仕事ができる:

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

そして、いくつかの異なるAjaxはあなたのサイトのそれぞれ異なる部分をロードする呼び出し、持っています。しかし、これには、ユーザーのブラウザが要求するHTTP要求の量が増加するという欠点があります。

これは、ページの残りの部分とは別に異なる部分を生成することができますが、これが前提です。あなたのすべてのコンテンツを同時に生成する必要がある場合、このテクニックは使用することはできません。

これは良い読み取り(「BigPipe」という名前のFacebookのプロジェクト)は次のとおりです。http://www.facebook.com/note.php?note_id=389414033919

関連する問題