私は古いPHPフレームワークを書き直しています。現在、ナビゲーション、ルーティング、および認可は、各ページ要求でロードされる構成ファイルに基づいて行われます。さまざまなユーザーレベルのページルーティングとナビゲーションを保存するための最善のアプローチ
構成ファイルをデータベースに変更しました。読み込まれるページの数は、ユーザーレベルと承認に基づいてユーザーごとに異なります。 しかし、依然として各ページリクエストで複数のデータベースクエリが実行され、すべてのエントリがロードされ、ナビゲーション、ルーティング、および認証が処理されます。 ほとんどの場合、これらの機能の結果が特定のユーザーにとって同じであるため、これは「キャッシュされる」と思います。
最良のアプローチは何ですか?
オブジェクト内の関数の結果をキャッシュし、それらをセッションに格納しますか? 各ユーザーのオブジェクトで一時ファイルを生成しますか? Memcachedを使ってそれらをメモリに保存しますか? このようにして、各ページリクエストで処理しますか?
編集: フレームワークはOOP指向で、セッションオブジェクトのusername/userlevelのようなものをキャッシュしています。
ありがとうございました。私はフレームワークがOOPであることを明確にするために質問を編集し、あなたの答えにあなたが言及したものをキャッシュしています。 「(セッションなどのデータを使用しているなど)」と言う。それは私のポイントです:-)私はセッションからすべてを得るべきですか? Username/userlevelなどはすでにセッションに入っています。しかし、ナビゲーションの目的で階層構造を持つ '$ availablePages'、すべてのページにロードされたテンプレートファイルなどは、各ページリクエストで取得されます。このデータをセッションにも格納する必要がありますか?または、毎回これらのデータを取得するためのクエリを実行しますか? –
ナビゲーションヒントを取得するのが複雑で、何度かアクセスしているのであれば(それは一度だけ行う必要がありますか?)、次にキャッシュしてください。ロールの「キャッシュファイル」に保存してそのまま再利用することもできますが、ロールが変更されたときにキャッシュを無効にすることに注意してください。一般的に言えば、応答時間やメモリ消費量が膨らんでいない場合は、パフォーマンスにほとんど影響を与えないものを過度に最適化しないでください。 –
ありがとう、過最適化はおそらく私がやっていることの良い定義です。私はそれぞれのページの負荷の要求に固執します。 Thnx! –