3

Zend_Navigation を Zend_Acl と組み合わせて使用​​して、作業中の新しいアプリでナビゲーションとアクセス許可を管理することを研究しています。

私が本当に気になっていることの 1 つは、アプリケーションで可能なすべてのナビゲーション項目を含む巨大な XML ファイルを作成する例を見たことです。すべてのリクエストでこのファイルをロードすることは、主要なパフォーマンスのボトルネックのように思われ、より良い方法が必要です。memcached や別のキャッシング メカニズムを使用すれば、その多くを軽減できることはわかっていますが、アプリケーション自体を最適な方法で作成してから、キャッシングを追加する必要があると感じています。何かを遅く肥大化させて、汚れた作業をクリーンアップするためにキャッシュに頼るのは意味がありません。

この ZF アプリではモジュラー セットアップを使用しているため、各モジュールには固有のブートストラップがあります。モジュール固有の nav XML ファイルを作成し、特定のファイルをロードすることを検討しましたが、それが最善の方法であるかどうかもわかりません。

何百ものナビゲーション パスを持つ可能性がある大規模なアプリケーションで Zend_Navigation を使用する方法として推奨されるものは何ですか?

4

2 に答える 2

1

私はこれを提案された方法とは呼びません.2年前に基本的に同じ質問をしたときの方法です. 一言で言えば、すべてのページに必要なすべてのパスが XML に含まれています。他のすべてのパスは実行時に追加されます。その後、ACL を追加します。

まず、Zend_Navigation の ACL はナビゲーションの表示のみを管理することに注意してください。アプリケーションへのアクセス制御を提供したり、より適切に保証したりすることはありません。メニューに特定のリンクがありませんが、ユーザーが正しいパスを知っていれば、それでもリソースにアクセスできます。もちろん、ナビゲーション オブジェクト内の ACL 情報を使用してアプリケーションを強化することもできますが、主に ACL をコントローラーとモデルに直接組み込むというよりスマートな方法があると思います。

次に、主な質問ですが、私のナビゲーションの XML ファイルには、常に必要なメニューである第 2 レベルまでの最も基本的な構造しか含まれていません。それは多かれ少なかれ、私がコントローラーとアクションを持っているものでもあります。params から生じるすべてのパスは、実行時に追加されます。そのため、ACL を XML に含めることさえせず、実行時に挿入します。単純に、そうして初めて、すべてのパスを含む完全に拡張された現在のブランチがあるからです。

于 2012-07-26T14:33:40.320 に答える