NetCatにサイトを作成しない方法について

この記事は、主にサイトの作成にNetCatを使用している人を対象としています。 ただし、他の開発者はこの情報を興味深いと感じるかもしれません。 多くの点で、これは他のシステムにも当てはまるためです。



そのため、最近、NetCatで開発されたサイトがゆっくりと機能している理由を把握する必要がありました。 その過程で、メインページ形成するために〜150個のデータベースクエリが作成されたことが判明しました。



最初は自分の目を信じることができませんでした。



いくつかの操作の後、約100件の余分なリクエストを削除できました。



いくつかの結論について話し、いくつかの開発者に警告したい



  1. このような呼び出しが少なくとも3つ以上入力されている場合、s_list_class関数を使用する必要はありません。3 。別のコンポーネントからデータを出力する必要がある場合は、デフォルトモジュールのfunctions.inc.phpにこのデータを表示する関数を記述することをお勧めします。 この場合、ほとんど常に1つの要求で実行できます。

    一般に、s_list_classを1回呼び出すと、多数のデータベースクエリを作成できます。 オブジェクトが表示されるコンポーネントに応じて。
  2. opt()を忘れてください 。 使用(<if>?<true>:<false>)

    問題は、optの条件がfalseを返した場合でも、コードは実行されますが、その結果はページに表示されないことです。
  3. Fileフィールドでコンポーネントを使用するときは注意してください 。 そのようなコンポーネントのオブジェクトのリストが表示されると、オブジェクトの数だけファイルに関するデータを受信するよう要求されます。 また、「ファイル」タイプのこのようなフィールドが2つある場合、リクエストは2倍になります。 3つ、3つなどの場合

    つまり 「フォトギャラリー」コンポーネントがあり、その中に2つの「ファイル」フィールドがある場合、20を超えるデータベースクエリが行われ、最新の10枚の写真が表示されます。

    一般に、ループ内のクエリは極端な悪です! これを避けてください。
  4. 投票とほぼ同じ状況。 調査の終了時には、データベースに対する回答オプションと同じ数のデータベースへのクエリがあります
  5. さまざまな条件に従って選択とソートが実行される新しいコンポーネントを作成し、コンポーネントテーブルに必要なインデックスを配置します 。 これにより、作業を大幅にスピードアップできます。


それでも、NetCatで非常に大規模で複雑なプロジェクトを作成できます。 それらは、プロセス内で何が起こっているかの本質を本当に理解している人々によって単に作成されるべきです。 そのため、システムの内部機能の一部ではなく、特定のプロジェクト用に作成された独自のものを使用することをお勧めします。 そして、これらの瞬間が開発者向けのドキュメントに反映されると良いでしょう。



PS NetCat開発者へのアピール(突然読んだ場合)

ループ内のデータベースクエリを避けてください。 特に、それが何回反復されるかが事前にわからない場合。 これらの問題のある関数を書き直したかったのです。 また、開発者向けのドキュメントで、関数がデータベースにクエリを実行するかどうか、生成する量、および落とし穴を個別に示すとよいでしょう。



All Articles