タグ付けされた質問 「optimization」


8
メモリのパフォーマンスを改善するためのWordpressのリファクタリング[終了]
Wordpressのメモリ消費量を詳しく見ました。私のサイトでは、すべてのプラグインを実行する快適な環境を準備するために、各ページに20MBのRAMが割り当てられているようです。このようにプロットしました。 最適化する単一の場所はなく、ほとんどのメモリを消費する悪意のある人はいません。消費はすべて、多くの多くのphpモジュールに広がっています。 Wordpressでメモリ内の環境を1回だけ初期化し、ヒットごとに何度も再利用するにはどうすればよいですか?遅いPHPでユーザーがクリックするたびに20 MBを消費させたくない-多くのメモリを搭載したサーバー上でも、すべての作業を完了するのに数秒かかります。基本的には、再利用可能な読み取り専用のメモリチャンクが必要になります。 また...なぜ20MBですか?誰でもこれに関する洞察を提供できますか? 編集:これは、開発マシンで実行されているWordpressでのWinCacheGrind出力です(共有ホスティングよりも非常に高速です)。ご覧のとおり、メインページのHTMLを生成するためだけに1秒以上かかります。共有ホスティングによって速度を落とすと、トラブルのレシピがあります。ほとんどの時間を費やす方法を選びました。これをどのように最適化しますか? 編集:これは、この素晴らしいfunctions.phpプロファイリングツールからのクエリ統計です。 ロード:12クエリ-532ms-19.1MB-43キャッシュヒット/ 53 クエリ:15クエリ-563ms-19.0MB-72キャッシュヒット/ 86 ディスプレイ:21クエリ-705ms-19.2MB-234キャッシュヒット/ 257 編集:あなたを驚かせる何かが見たいですか?index.phpの最後に次の行を挿入します。 echo "<pre>\n"; print_r(get_defined_vars()); echo "</pre>\n"; 現在の投稿の本文がメモリに保存されている回数を数えようとしました。20個のインスタンスをカウントしました。次に、PHPに参照カウントがあるため、コピーの量が3つに減ったことに気付きました。2つはWP_Queryにあり、1つはオブジェクトキャッシュにあるようです。さらに調査中です。 これが、WordPressがメモリの問題をターゲットにしたリファクタリングを必要としている理由です。メモリの消費を、それが行うことの完全な複雑さのせいにすることはできなくなりました。それは単に間違ったことをしているだけです。 編集:これを理解しようとした1日後、ここに私の発見があります: 1)すべてのメモリの88%は、require、include、またはinclude_onceタイプの呼び出しに由来します。 2)phpファイルのインクルードは、ほとんどの場合、リクエストを処理する最初の部分で発生します(当然ですが)。これは、すべてのメモリが使い果たされる場所でもあります。 3)リクエストの実行中に実行されているすべての関数をプロットすることは非常に興味深いです。合計12000を超えるコールがあります。私はそれらをより見やすくするためにジッターしました(レベル軸は基本的にスタックの深さです): 4)考えられる唯一の方法は、含まれる.phpファイルの量を最小限にすることです。関数を元のファイルごとに分割すると、多くのファイルが最大でも1回または2回ヒットしていることがわかります。それらが必要でないときにそれらをスキップする方法が必要です。たとえば、リモートデータベースバックアッププラグインはロードされて登録されますが、まったく使用されません。以下は、上記のプロットをファイル名で分割したものです。 私のブログのメモリフットプリントを30%以上削減することにつながるリファクタリングのために、私の評判すべてに値する賞金を提供しています。 編集:WP 3.1をインストールしました。これは古いバージョンとの比較です。 青はWP 3.1、赤は3.0.4です。新しいWPはより高速ですが、より多くのメモリを消費します。 インクルードファイルごとのリストを次に示します。 これにより、「オールインワンSEOパック」がどれだけのメモリを消費しているかがわかります。1つの方法は、プラグインの機能のごく一部を使用して必要なものを取得することです。また、私自身のプラグインはかなり悪いようです。 たとえば、comment.php(ブログへのコメントは許可していません)および他のいくつかの条件付きロードを試してみたいと思います。非推奨のコードをすべて削除しました。グローバルテーブルをオンデマンドでロードするためにkses.phpを削除しました。l10nを単純化し(ローカライズは行いません)、その関数がルックアップなしで文字列をすぐに返すようにしました。私が勝手に設定した30%のマークにはまだ程遠い。 編集:デフォルト設定(32MBのオペコードキャッシュ)でAPCをダウンロードして有効にしました。比較は次のとおりです。 コードの読み込みが大幅に加速され、コードのメモリ容量も少なくなっていることがわかります(おそらく、元のソースではなくオペコードだけを扱っているためです)。ただし、メモリ消費は依然として非常に高くなります。

1
一括操作の挿入と削除を最適化しますか?
個々の投稿で作業しているときはそれほど目立ちませんが、数千ものコードを一括して作成または削除すると、プロセスは非常に遅くなります。 適用する適切な調整やカットするコーナーはありますか? コンテキスト: wp_insert_post() カテゴリとタグが渡された; いくつかのカスタムフィールドを追加します。 (既存のファイルから)添付ファイルを作成して関連付けます。

3
数百万の投稿に対してWPサイトを最適化する方法
私は、カスタム投稿タイプを介して何百万もの投稿を作成する可能性が非常に高い会社のWebサイトに取り組んでいます。彼らは祈りなので、基本的にフロントエンドのユーザーはフォームを介して短いフレーズを送信するだけです。会社が気にするのは、投稿内容と投稿日だけです。このサイトはまだ公開されておらず、すでに120,000を超える投稿があるので、何百万と言っても私は真剣です。 そのため、最適化に関する質問がいくつかあります。 500,000件の投稿があるカスタム投稿タイプに「特集」カテゴリがあるとします。注目のカテゴリには500件の投稿しかありません。注目の投稿のクエリを作成する場合、500,000件の投稿全体をクエリしますか、それとも注目の500件のみをクエリしますか?特集されている最新の投稿を10個だけ表示したい場合はどうすればよいですか? このカスタムの投稿タイプをデータベースに保存するときに、特に本当に必要なのは投稿の内容と日付だけなので、サーバーリソースを削減するためにできることはありますか? カスタム投稿タイプを使用する必要がありますか?WordPress管理機能にうまく統合されているため、原則としては気に入っていますが、パフォーマンスに大きな欠点がある場合は、何か別のことができると思います。 この規模でプロジェクトに取り組んだことはないので、いつもよりもパフォーマンスが少し気になります。助けてくれてありがとう!

4
wp-superキャッシュでJSONをキャッシュする方法
新しいプロジェクトでは、wp-super-cache(クライアントの優先プラグイン)を使用して、カスタムコンテンツタイプの静的htmlファイルを作成しています。しかし、すべてが適切にキャッシュされているかどうかを把握しようとしています。 これは2部構成の質問です。 1)作成したテーマは、ページテンプレートを使用して、ajax呼び出しを介して取り込まれたjsonを出力します。すなわち。ページにアクセスすると:theurl.com/sample-純粋なjsonが得られます。すべてのページおよび投稿の非JavaScriptバージョンがありますが、Ajaxはこのテーマのフロントエンドを駆動します。これらのファイルのヘッダーとフッターを削除して純粋なjsonにし、jsonがキャッシュされているかどうかを判断する方法を見つけようとしています。理論的には、データはワードプレスが提供するページであるため、データはキャッシュされます。しかし、キャッシュされているかどうかはどうすればわかりますか? 2)json apiプラグインを使用して、特定の投稿データも提供しています。 http://wordpress.org/extend/plugins/json-api/ この例では、プラグインのデフォルトの出力方法を利用して、このページにアクセスするとします。myurl.com/category/news?json=1-はこの出力がキャッシュされているかどうかを確認する方法は誰でも知っていますか?キャッシュされていない場合、これを実現する方法は何ですか? このオンラインに関する情報はあまりないようです。そのため、魅力的で最適化されたワードプレスサイトを作成するという精神で、兄弟を助けてください。

2
画像の最適化に$ content_widthを使用するのに適した代替手段は何ですか?
$content_widthWordPress のGLOBALは、画像のサイズを制限したり、投稿に埋め込むことによって、多くのテーマや一部のプラグインに影響を与えます。これは、wordpress.orgに送信されるテーマの要件です。 以下を使用して設定されます。 $content_width = 584; // Twenty Twelve example 投稿に大きな画像(デフォルトは1024x1024)を挿入すると、次の結果になります。 src="../wp-content/uploads/2013/02/IMG_1390-1024x682.jpg" width="584" height="328" 代わりに、このグローバル設定を削除して実際の画像サイズを挿入すると、add_image_sizeそれを設定すると次のようになります。 src="../wp-content/uploads/2013/02/IMG_13901-584x328.jpg" width="584" height="328" グローバルを削除し、非常に一般的な大きな画像を挿入すると、ページの読み込み時に何百キロバイトも節約される複数の画像があるページで、2倍以上の節約になります。 add_image_sizeフルサイズの画像を挿入する機能を使用および削除することは、より良いオプションではありませんか? 追伸 もっと正確なデータでここに書いた

6
WordPressインストールのベンチマーク方法は?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新することがありますので、上のトピックワードプレスの開発スタックExchange用。 4年前に閉鎖されました。 WordPressに対する最適化がどれだけうまく機能しているかを判断するために、ベンチマークデータを収集しようとしています。高トラフィックのヒントでこのページを見つけましたが、データが含まれていません。WordPressのベンチマークとなるツールはありますか?トラフィックにどれだけ耐えられるかだけでなく、1時間にX投稿、1分間にXコメントを実行するときのフェアのキャッシュ方法や、WordPressのその他の通常の使用例などです。 記録のために、私はインストールに対してSiegeとBlitz.ioを実行しましたが、それはあなたのサイトがリクエストをキャッシュして処理/拡散できる程度にすぎません。一貫して生成できる唯一の測定値である場合(req / sが唯一の方法である場合があります)、それで問題ありません。さまざまな使用状況でどれだけのreq / sを維持できるかを示すことができる他のツールがある場合(10分ごとにキャッシュを再生成する必要があるのは、更新中にサービスを提供する場合、またはキャッシュをクリアしてからキャッシュを更新する場合に大きな影響があります)。

2
Wordpressデータベースが遅い-InnoDBに切り替えるべきですか?
1万件を超える投稿があるWordPressサイトを持っていますが、投稿を追加および編集していると、物事が非常に遅くなり始めています。ユーザーのページは、管理者の投稿リストと同様に素晴らしく高速に読み込まれますが、書き込みまたは更新が発生すると、サーバーが100%のCPUになり、時間がかかります(PHPのタイムアウト60秒よりも長い場合があります)。 これはMyISAMのテーブルレベルのロックに関係していると考えており、これをInnoDBに切り替えることを考えています。これを行うことの意味は何ですか? いくつかの統計: select - per hour ~22k update - per hour ~7.6k set option - per hour ~7k 他にもさまざまな最適化ができることは知っていますが、これが最も大きな影響を与える可能性があると感じています。 ありがとう 編集:速度低下の原因となっている主要な問題の1つを見つけました。毎回「関連性」を再生成しているのはYARPP(Yet Another Related Posts Plugin)でした。これは、2k +タグが原因であるようです。「タグを考慮する」オプションをオフにしたところ、かなり高速になりました。 また、XMLサイトマッププラグインなど、他のものを再生成するプラグインがこの種の問題を引き起こす可能性があります。 ですから、私の差し迫った問題は解決しましたが、Wordpress向けのInnoDBとMyISAMの良い答えを聞きたいと思います!

4
共有Webホストでの近接ベースの店舗ロケーション検索を最適化しますか?
クライアント用の店舗検索を作成する必要があるプロジェクトがあります。 私はカスタム投稿タイプ「restaurant-location」を使用しており、Google Geocoding APIを使用してpostmetaに格納された住所をジオコーディングするコードを記述しました(JSONで米国のホワイトハウスをジオコーディングするリンクがあり、緯度と経度を保存しました)カスタムフィールドに。 この投稿のスライドショーで見つけた式をget_posts_by_geo_distance()使用して、地理的に最も近い投稿の順序で投稿のリストを返す関数を作成しました。あなたは私のように私の関数を呼び出すかもしれません(私は固定された「ソース」lat / longで始めています): include "wp-load.php"; $source_lat = 30.3935337; $source_long = -86.4957833; $results = get_posts_by_geo_distance( 'restaurant-location', 'geo_latitude', 'geo_longitude', $source_lat, $source_long); echo '<ul>'; foreach($results as $post) { $edit_url = get_edit_url($post->ID); echo "<li>{$post->distance}: <a href=\"{$edit_url}\" target=\"_blank\">{$post->location}</a></li>"; } echo '</ul>'; return; ここに関数get_posts_by_geo_distance()自体があります: function get_posts_by_geo_distance($post_type,$lat_key,$lng_key,$source_lat,$source_lng) { global $wpdb; $sql =<<<SQL SELECT …

2
WP_Queryが不当な量のメモリをリークしている
以下の関数でWP_Query()を呼び出すたびに、Wordpressは8 MBのメモリをリークします。そして、私はこの関数を頻繁に呼び出すので、物事はかなり速く毛むくじゃらになります... :(結果の$ queryObjectの設定を解除し、定期的にwp_cache_flush()を呼び出そうとしましたが、どちらも効果がないようです。 function get_post_ids_in_taxonomies($taxonomies, &$terms=array()) { $post_ids = array(); $query = gen_query_get_posts_in_taxonomies($taxonomies, $terms); // var_dump($query); //Perform the query $queryObject = new WP_Query($query); //*****THE 8 MEGABYTES IS LEAKED HERE***** //For all posts found... if($queryObject->have_posts()) { while($queryObject->have_posts()) { $queryObject->the_post(); //Get the $post_id by capturing the output of the_ID() ob_start(); the_ID(); …

3
WordPress DBの成長を計画するための良い戦略は何ですか?
WordPressデータベースの成長に合わせて最適化し、パフォーマンスを維持するというトピックについてのフィードバックを期待しています...画像を描くために...約150 kbから始まるWordPress / Buddypress MUサイトがあるとします(バニラインストール) ...時間の経過とともにユーザーはブログ、フォーラム、投稿、コメントを追加し、データベースは5メガバイトに増加します。その後、翌年には10メガバイトに増加します。...ホスティングコントロールがCpanelやPleskなどの標準の同じ場所にあるセットアップであると仮定します。 データベースのエントリ数は、どの時点でフロントエンドWebサイトのパフォーマンスに影響しますか? データベースの成長に合わせてこれをスムーズに実行し続けるために、Webサイト管理者として何ができますか? データベースのサイズが500〜600MBである5年目以降のパフォーマンスに関して、何を期待できますか? タイトな船を維持する上であなたが持っているかもしれないフィードバックをありがとう。 よろしく、 S

4
get_posts()でmeta_query引数のエイリアスを設定します
を実行するときにmeta_query引数にエイリアスを設定する方法はありget_posts()ますか?クエリの1つでパフォーマンスが低下しています。最適化するには、1つだけ必要なときに3つのテーブルを結合するのではなく、同じ結合テーブルを再利用できる必要があります。 私の現在の例... $args = array( 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'abc_type', 'value' => array('puppy', 'kitten'), 'compare' => 'IN', ), array( 'relation' => 'OR', array( 'relation' => 'AND', array( 'key' => 'abc_type', 'value' => 'puppy', 'compare' => '=', ), array( 'key' => 'abc_color', 'value' => 'pink', 'compare' …

2
複数のページに分かれている場合は、Googleが投稿全体をインデックスに登録するようにします
これは問題ですが、を使用して投稿を分離するパブリッシャーへの重大な警告でもあり<!--nextpage-->ます。 私と一緒に裸。私は、検索エンジンで非常に上位にランク付けされる、トラフィックの多い複数の作成者プラットフォームを実行しています。SEO関連の改善を行っている間に、記事の最初のページだけがGoogleによってインデックスに登録されていることに気付きました。どうやってこれに気づきましたか? 誰かが記事の索引付けされていないページのコンテンツをつかんで、自分のサイトに投稿したからです。その結果、特定のキーワードで私よりも上位にランク付けされました。実際、言い換えると、私のサイトの記事は最初のページを超えて索引付けされていません。 私の質問は、記事が複数のページに分かれている場合、検索エンジンで記事全体をインデックスに登録するにはどうすればよいですか?理想的には、記事全文を表示するスクリプトならば、訪問者が検索エンジンである(つまり、SEOのために有害ではない場合)。その他の提案は大歓迎です。 余談ですが、もし私がブラックハットのテクニックに興味を持っていたら、そこに私が利用できるコンテンツの金山があります。それについて考えてください。 個人的な注意として、この問題はWordpressの将来のアップデートで対処する必要があります。 アップデート:どのように詳細に同様の質問ページ分割シーケンス内のすべてのページはのためのWordpressのは、同じ正規のURLを作成するよう求められたここで、しかし答えは正しいの質問に答えていないとして掲載してマークされました。このソリューションはページ付きのコメントに対してのみ機能し、ページ付けされた投稿に対しては機能しません。 Update 2:Googleによるこのブログ投稿によると、とを使用rel=”next”しrel=”prev”てページ間の関係を示すことができます。だから、例えば、これは我々がに含めるべきである<head>上の2ページ: <link rel="canonical" href="http://domain.com/article/2" /> <link rel="prev" href="http://domain.com/article/1" /> <link rel="next" href="http://domain.com/article/3" /> また、前後にページがない場合は、rel = "prev"または "next"があってはなりません。

1
カスタム投稿タイプの管理ページを25,000件の投稿で最適化するにはどうすればよいですか?
非常に多くの投稿を一度に読み込むために、時々過剰なリソース制限エラーが発生します。PHPの制限を128に設定しましたが、いくつかの投稿タイプの投稿のリストをロードするだけでは、それ以上のリソースを消費します。 25,000件の投稿がある管理ページには217のクエリがあり、15,000件の投稿がある別の管理ページには301のクエリがあります。 これらをキャッシュする方法、またはこれらのページを問題なくロードするための別の解決策はありますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.