web-dev-qa-db-ja.com

なぜホーム(他のページ)よりもホームが遅いのですか?

私は遅い読み込み時間に苦しんでいるワードプレスのウェブサイトを調整しようとしています、そして私はホームページが読み込むのにより多くの時間がかかるように思われることを知りました。基本リクエストが終了するのにかかる時間を検討しているだけなので、コンテンツによるものではありません(firefoxのfirebugで表示可能)。

また、私はカスタムページにindex.phpコードをコピーしてみました、そしてメインのホームが約7でロードする間、同じ正確なコードが約1秒でロードするのです。内容の違いが、このテストの後、私はこれが何を引き起こしているのかわかりません。

メインインデックスのためだけに、ワードプレスが舞台裏ですることはたくさんありますか?この状況を説明し、さらに重要なことに、ホームページの読み込みが早くなるように修正する方法は他にありますか?

更新 - 直接解決策

何度も盲目的な試みをした後、私はhomeと呼ばれる新しいページを作成しました。このページはカスタムテンプレートとしてindex.phpを使用します(コピーではなく、同じファイルです)。私はそれへのベースパスへの呼び出しを(wordpressの内部書き換えによって)リダイレクトしました、そして私は以前と同じホームページを持っていて、ちょうど1/6の時間でロードされました。結果には満足していますが、何が起こっているのかを理解したいのです。

他の更新

つまり、このサイトでは動的な(WordPressの意味での)ページを使用することはできません。さまざまな機能を使用してコンテンツを挿入するカスタムの「静的」ページでしかうまく機能しません。遅い(メモリ制限が大きい)または空白(メモリ制限が小さい、スクリプトが失敗する)だけです。

この質問 で示唆されているように、私はカスタムページにリンクされた静的ホームを作成しました、そしてそれはうまく動きます。私もブログページを作成し(これもカスタムテンプレートを使用します)、これも問題なく動作します(ここで、 "fine"は、1つのWordとコードなしの空のテストページを示します)except指定します管理 - >閲覧設定の "投稿ページ"として。言い換えれば、wordpressが動的なページ(メインループを保持するはずのページ)を見るとすぐに非常に重い処理が行われ、大量のRAMが消費されます。

それでもこの原因を探して、私はそれを回避することができますが、私は本当に問題が何であるかを理解したいと思います。

編集:追加された賞金

詳細情報:すべてのプラグインを無効にしてみたところ、wordpressが最新バージョンに更新されています。

追加の編集:テーブルのインデックス

wp_posts:

PRIMARY KEY  (`ID`),
KEY `type_status_date` (`post_type`,`post_status`(1),`post_date`,`ID`),
KEY `post_status_date_gmt` (`post_status`(1),`post_date_gmt`),
KEY `post_date` (`post_date`),
KEY `post_date_gmt` (`post_date_gmt`),
KEY `post_parent` (`post_parent`),
KEY `post_name` (`post_name`),
KEY `post_status` (`post_status`),
KEY `post_author` (`post_author`),
FULLTEXT KEY `post_related` (`post_name`,`post_content`),
FULLTEXT KEY `post_content` (`post_content`,`post_title`),

wp_term_relationships:

PRIMARY KEY  (`object_id`,`term_taxonomy_id`),
KEY `term_taxonomy_id` (`term_taxonomy_id`)

wp_term_taxonomy:

PRIMARY KEY  (`term_taxonomy_id`),
UNIQUE KEY `term_id_taxonomy` (`term_id`,`taxonomy`),
KEY `taxonomy` (`taxonomy`)
6
Matteo Riva

ほぼ4年後、私はこれに戻り、ついに問題を発見しました。そのサイトにはすべてスティッキーとしてマークされた記事がたくさんありました。 wordpressがスティッキーポスト(wp_optionsの直列化された配列)をマークするのに信じられないほど愚かなやり方のために、動的ホームページのメインループは信じられないほど長い時間がかかりました。テーブルのsticky_postsフィールドをクリアすると問題が解決しました。

2
Matteo Riva

私は前の2つのコメントと違うように頼みます。

静的ホームページを使用すると、postsテーブルの主キーでインデックススキャンを使用するWPと、postsテーブルのpost_date、statusまたはpost_parentでインデックススキャンを使用することがあります。

本質的に、ホームページはWPの貧弱なデータベース設計のために非常に遅くなっています。このスキーマには、分類表に関する多数の列を持つインデックスがあります。MySQLでは、意味のある量の投稿があっても無視します。分類法のためにテーブルを使いすぎているという事実も役に立ちません。

データベースで、安全にインデックスを追加します。

CREATE INDEX extra_posts ON posts (post_type,post_status,post_date DESC)
CREATE INDEX extra_term_rel ON term_relationships(term_taxonomy_id,object_id)
CREATE INDEX extra_term_tax ON term_taxonomy(taxonomy,term_taxonomy_id,term_id)

それは完璧ではないでしょう、しかし少なくともWPはあなたのフロントページでインデックスベースの入れ子になったループプランを使うことができるでしょう...

ああ、そして...あなたがあなたのフロントページでどんな種類のカスタム投稿タイプを使っているならば、あなたはまた追加する必要があります:

posts(post_status,post_date DESC)

それ以外の場合、OR句があるため、メインクエリにインデックスはまったく使用されません。

7

デフォルトではホームページのパフォーマンスに違いはありません。ただし、一部のプラグインではそのページだけで何かが遅くなる可能性があります。

WPパフォーマンスをプロファイルするためのたくさんのプラグインがあります。私は通常 WP Tuner を使用しますが、最新のWPバージョンでは壊れているようですので、すぐに代用することはできません。

最も簡単な方法は、時間/記憶マーカーでいっぱいのテンプレートをパッキングすることです。

printf(  '%d queries in %.3f seconds, using %.2fMB memory', get_num_queries(), timer_stop( 0, 3 ), memory_get_peak_usage() / 1024 / 1024 );

それは粗雑ですが、多くの場合、減速が発生する場所を特定することができます。

5
Rarst

最初に、WOrdPressのクエリアと含まれている画像、スクリプト、スタイルシートをチェックしてください。あなたはplugin Debug Queries であなたは問い合わせをチェックすることができますそしてあなたはplugin Debug Objects であなたのインストールと間違いについてのより多くの情報になります。

0
bueltge

ホームページのロードに時間がかかる場合は、ホームページのレンダリング中にリモート要求を行うプラグインまたはテーマのテーマの機能がある可能性があります。

これを引き起こしている可能性のある関数を探すために、 'wp_remote_'への呼び出しのためにあなたのwp-contentディレクトリを再帰的に検索します。

0
prettyboymp