web-dev-qa-db-ja.com

Drupalデータベースの読み込みが遅い

私はAjaxを使用してビューをロードする website (IEで開かないでください)を作成しています。次に、BOOSTを使用してビューをHTMLとしてキャッシュしたいと思います。

これらのページは「ブースト」されている必要があります。

http://www.spanjevakantiewinkel.nl/regio/ajax/8 http://www.spanjevakantiewinkel.nl/regio/ajax/9 ...

ビューをロードする方法の代わりにJSONを使用する必要がありますか?どのように考えていますか?

ID(8,9、...)は、大きなヘッダー画像の下に小さな画像をホバーすることで得られます。次に、ビューが読み込まれますが、常にデータベース内で、BOOSTで作成されたHTMLページが必要です。

function dynamic_regio_menu() {
  $items = array();

  $items['regio/ajax'] = array(
    'title' => 'Dynamic Regio',
    'page callback' => 'dynamic_regio_get_by_category_id',
    'access arguments' => array('access content'),
    'type' => MENU_CALLBACK
  );    
  return $items;
}

function dynamic_regio_get_by_category_id($cat_id){
    $viewName = 'regio_submenu'; // The name of the view we are going to load

    $args = array($cat_id);  // Array of arguments we set for the view.
    $displayId = 'block'; // The display id of for the view. 

    // Call the views_embed_view function to returned themed view output
    $html = views_embed_view($viewName, $displayId, $args);
    echo $html;
}
xhr = $.ajax({
  type: 'POST',
  url: '/regio/ajax/' + this.parentNode.getAttribute('tid'),
  success: updateData, dataType: 'html',
});
4

私の問題はビューのキャッシュ方法にあると思います-時々遅いと言えば、それはおそらくキャッシュが保存されているためです。コンテンツが頻繁に変更されない場合は、間隔を長くするだけです。別のオプションは Views content cache を使用することです。しかし基本的には、十分な数の訪問者(および画像をホバリングする十分な数の人々)がいる場合、彼らは時々だけ待機します...

1
mojzis

クエリ時間は、DBがクエリの結果を送信して返されるまでにかかった時間です。ページの実行では、これらの結果のすべての処理が考慮されます。

これが、キャッシュを有効にすることが非常に重要である理由です。

これは、ビューのキャッシュの詳細を説明します: ビューはコアキャッシュメカニズムを介してキャッシュされますか、それとも各ビューで直接キャッシュを設定する必要がありますか?

1

わかりました、これは古いスレッドであることはわかっていますが、これについてかなりのトラブルを経験したばかりなので、ここに投稿して他の人に私の問題がわかるようにしようと思いました。

まず何よりも、ビューがすべてのノードをレンダリングしようとしていないことを確認し、コンテンツがたくさんある場合はコンテンツタイプにコメントを付けます。キャッシングなどを使用している場合でも、サイトの処理速度は著しく低下します。この問題は、56000程度のコメントを30000ノードに移行した後にのみ発生しました。

ポケットベルの数は明らかにノードとコメントを数え、私のビューにはログインしたユーザーのコンテキストフィルターがあり、正常に機能していませんでした。動作させると、ビューは速く、すべてが良いので、これが将来の誰かに役立つことを願っています。

0
Hollyfox

まだ有効になっているモジュールを削除したかどうかを確認することをお勧めします。 Drupalがモジュールファイルを検索しているため、これは実際のパフォーマンスキラーです。

あなたが説明する動作はこの問題のように見えます。

0
cateye

それが役立つかどうかはわかりませんが、ajaxを作成するときにdrupal_exit()を呼び出さなければなりませんdrupalこの文字列だけですべてのページ要素を取得する必要はありません

function dynamic_regio_get_by_category_id($cat_id){
    $viewName = 'regio_submenu'; // The name of the view we are going to load

    $args = array($cat_id);  // Array of arguments we set for the view.
    $displayId = 'block'; // The display id of for the view. 

    // Call the views_embed_view function to returned themed view output
    $html = views_embed_view($viewName, $displayId, $args);
    echo $html;
    drupal_exit();
}
0
Ahmed