0

さて、これを開始する方法すらわかりませんが、基本的に、すべてのページに表示されるメニューの1つが、mysqlデータベースからテキストとリンクを取得するようになっています。

コードは次のとおりです。

<table class="LeftMenuTable">
<?php
    // Generates the left menu from the LeftMenu_items table
    $result = MySqlQuery("SELECT * FROM Menu_LeftMenu;");
    while ($row = mysqli_fetch_assoc($result))
    {
        if ((int)$row['header'] == 0)
        {
            // echos value is on or not
            echo "<tr><td class='LeftMenu'><a href='" . $row['url'] . "'>" . $row['text'] . "</a></td></tr>";
        }
        else if ((int)$row['header'] == 1)
        {
            // header
            echo "<tr><td style='border:0px; height:5px;'></td></tr>";  // adds extra empty tabel
            echo "<tr><td class='LeftMenuHeader'><b><strong>" . $row['text'] . "</strong></b></td></tr>";
        }
    }
?>
</table>

function MySqlQuery($Query)
{

    $result = $mysqli->query($Query) or die(ReportMysqlError(mysqli_error($mysqli), $Query));
    return $result;
}

どういうわけかhtmlキャッシュに置き換えることができるSQLクエリがサイトの速度を低下させているように感じます。

誰かが何か情報や提案を持っているなら、それは非常に魅力的です。

4

3 に答える 3

0

あなたが十分に熱心であれば、少し異なるアプローチをお勧めします。

「Smarty」と呼ばれるテンプレート言語を使用してページを作成する場合は、こちらで詳細を確認してください。http://smarty.netを見ると、smarty がキャッシュを管理してくれることがわかるはずです。

これはあなたの質問にどのように関連していますか。

  1. コンテンツを HTML に「エコー」するのをやめるので、Web 開発が容易になります。
  2. Smarty がキャッシュを行います。smarty テンプレートが読み込まれると、smarty はそのコピーを保持します (または、ファイルを x 時間、日などキャッシュするように指示できます)。
  3. サイトが成長しても、smartys キャッシングは、サイトの実行と読み込みを高速に保つのに役立ちます。
  4. キャッシングを機能させるために必要な作業はほとんどなく、スマートなテンプレートを使用してサイトを構築するだけです.
  5. 最後に、smarty を使用してサイトを構築する方がはるかに簡単であることに気付くかもしれません。

ジョン。

于 2012-06-17T10:56:13.110 に答える
0

データベースを呼び出すメソッドで (メニュー項目を取得し、対応する html を構築するため):

  1. $_SESSIONメニューのhtmlで現在のアイテムがあるかどうかを確認してください。
  2. (1) が何も返さない場合は、クエリを実行し、html を構築して、結果を に保存します$_SESSION
  3. メニューの html を返します。

セッションの使用方法についての詳細は、こちらを参照してください。

このように、メニュー クエリはonceセッションごとにのみ実行されます。ただし、それが実際のパフォーマンスブレーカーであるとは思えません(クエリが多かれ少なかれ通常の形式である場合)。

changes上記のメカニズムでセッションが期限切れになる前に、メニューで自動的に取得されないことに注意してください。

于 2012-06-17T10:44:07.737 に答える
0

私は通常、キャッシング レイヤーを整理する必要があるときにmemcached (または他の同様のソリューション) を使用します。

問題のテーブルが更新されるたびに起動される中間の「ジェネレーター」スクリプトを使用します(何らかの形式の管理パネルから更新されるためですよね?)静的ファイルを生成し、このファイルをメイン ビュー スクリプトに含めます。

于 2012-06-17T10:44:31.463 に答える