私のチームは、現在ログインしているユーザーに固有のメニュー項目を含む上部メニュー構造を持ち、選択したメニュー項目のコンテンツを下に表示するMVC4アプリケーションを作成しています。メニューは部分ビュー「_MainMenu」に表示され、MainMenuControllerインデックスアクションはデータベースからメニューデータを取得し、メニュー部分ビューを返す役割を果たします。メインレイアウト"_Layout"は、@ Html.Action( "Index"、 "MainMenu")を呼び出してメニューをレンダリングします。
ページが更新されるたびにデータベースにアクセスしてメニュー構造データを取得することは避けたいと考えています。また、別のメニュー項目が選択されたときにメニュー構造が再表示されないようにすることも理想的です。
私はAJAXを調べていて、新しいメニュー項目を選択すると、メニューの下にその項目のコンテンツが読み込まれるように実装しました。これは、ID = "mainContent"のdivを部分ビューとしてのコンテンツに置き換えることによって行われます(このdivロードされたビュー「MainContent」に存在します)。このように、メニューが再ロードされることはなく、ページが完全に更新されることもありません(異なるメニュー項目が選択されると、異なる部分的なコンテンツビューのみがスワップインおよびスワップアウトされます)。
このソリューションは機能しますが、それが本当にベストプラクティスであるかどうか、またはキャッシュを含むより良いソリューションがあるかどうかはわかりません。AJAXソリューションの問題の1つは、URLが「http:// MySite/MainContent」から変更されないことです。これは、ブラウザの[戻る]ボタンをクリックしても期待どおりに機能せず、F5キーを押してブラウザページを更新すると、現在表示されているページが失われることを意味します。更新の問題は、選択したメニュー項目を覚えておくことでおそらく解決できますが、これがAJAXの使用目的であるとはまだ確信していません。
誰かが彼らの経験に基づいて、キャッシングがこのシナリオのより良い解決策であると思うかどうか教えてもらえますか?