2 パス キャッシュ システムを実装したい:
最初のパスでは、PHP ファイルが生成され、すべての一般的な内容 (ニュース項目など) がハードコーディングされます。データベースには、これらをページにリンクするためのキャッシュ テーブルがあり (例: "index.php page=1 style=default")、データベースには uptodate フィールドも格納されます。これが false の場合、次回のページで最初のパスが再実行されます。が表示されます。
2 番目のパスは、何か (?) がどれくらい前のものか、および「あなたは次のようにログインしています...」のような変更可能な項目など、細かい詳細を入力します。
ただし、多くのコードといくつかのクエリなしで、キャッシュされたページとキャッシュされていないページ (検索など) の両方をサポートする効率的な実装についてはわかりません。
現在、ページが読み込まれるたびに PHP スクリプトが実行され、ページが再生成されます。検索のようなページでは、ほとんどの検索が異なるため、これで問題ありませんが、インデックスなどの他のページでは、ヒットごとに実質的に同じですが、多数のクエリが生成され、非常に長いスクリプトになります。
問題は、ページの一部がユーザーごとに変更されることです。たとえば、「あなたは次のユーザーとしてログインしています...」セクションなどです。そのため、生成されたページを単純に保存すると、ほぼ同一のページが 10,000 ページになることになります。
私は共有ホスティングを使用しており、現時点ではアップグレードする余裕がないため、主な懸念事項はサーバーの負荷を軽減することですが、サイトはサーバーの CPU のかなりの部分を使用し、MySQL にかなりの負荷をかけています。サーバ。
したがって、基本的には、各ページ リクエストに対して実行する必要がある量を最小限に抑え、ニュース アイテムのようなものを常にインデックスに再生成しないようにすることは、良いスタートのように思えます。
実際には、ニュース項目をプレーンな HTML としてハードコーディングすることを検討しましたが、それはそれらをいくつかの場所に維持することを意味します (それらは検索に使用される可能性があり、コメントはそのニュース項目専用のページ (つまり、news.php) にあるためなど)。 .