我的团队正在创建一个 MVC4 应用程序,该应用程序具有上层菜单结构,其中包含特定于当前登录用户的菜单项,并在下面显示所选菜单项的内容。菜单显示在部分视图“_MainMenu”中,MainMenuController Index 操作负责从数据库中获取菜单数据并返回菜单部分视图。主布局“_Layout”通过调用@Html.Action("Index", "MainMenu") 呈现菜单。
我们希望避免在每次刷新页面时访问数据库来获取菜单结构数据,并且我们还希望避免在选择不同的菜单项时出现任何可见的菜单结构重新加载。
我一直在研究 AJAX,并且我已经实现了一些选择新菜单项将加载菜单下方该项目的内容的方法,方法是将 ID="mainContent" 的 div 替换为部分视图(此 div位于加载的视图“MainContent”上)。这样,菜单永远不会重新加载,页面也永远不会完全刷新(只有不同的部分内容视图在选择不同的菜单项时被换入和换出)。
该解决方案有效,但我不确定这是否真的是最佳实践,或者是否有更好的解决方案涉及缓存。AJAX 解决方案的问题之一是 URL 永远不会从“http://MySite/MainContent”更改。这意味着单击浏览器上的“后退”按钮无法按预期工作,并且按 F5 刷新浏览器页面也会丢失当前显示的页面。刷新问题可能可以通过记住选定的菜单项来解决,但我仍然不相信这是 AJAX 的使用方式。
有人可以告诉我,根据他们的经验,他们是否认为缓存对于这种情况是一个更好的解决方案。