none
Динамическое меню RRS feed

  • Вопрос

  • Реализовать функционал динамического меню без проблем. Вот только меню в _Layot.cshtml а его значения в двух таблицах базы данных.

    и получится, что каждый запрос, вызывает обращение к базе. Мне это кажется расточительством. Есть ли менее  ресурсоёмкие варианты?

    19 марта 2014 г. 15:15

Ответы

  • "Мне это кажется расточительством. Есть ли менее  ресурсоёмкие варианты?" - кешируйте данные, и при каждом запросе не нужно будет брать даннные из базы.

    Сделаем содержимое сообщества лучше, вместе!

    • Помечено в качестве ответа Igor977 20 марта 2014 г. 11:18
    19 марта 2014 г. 16:49
    Модератор

Все ответы

  • если это ASP.NET MVC, то вся работа должна быть на контроллерах, а он должен в свою очередь передать эти данные в представление, и там уже показывать, если меню для всех не одинаковое, то вместе с данными должны (например) отправляться и права пользователей, в одном объекте. и уже в представлении фильтровать модель, по фильтру которая так же в модели, как бы передаёте 2 объекта завёрнутых в 1.

    Если же это не MVC, то это вообще не круто, но если вы все же не хотите MVC, есть AngularJS(в частности SPA приложения), изящное решение, но требует знания джаваскрипт, в принципе если знаете с#, разберётесь, документации полно.



    19 марта 2014 г. 16:04
  • "Мне это кажется расточительством. Есть ли менее  ресурсоёмкие варианты?" - кешируйте данные, и при каждом запросе не нужно будет брать даннные из базы.

    Сделаем содержимое сообщества лучше, вместе!

    • Помечено в качестве ответа Igor977 20 марта 2014 г. 11:18
    19 марта 2014 г. 16:49
    Модератор
  • Можно хранить в сессии данные, однако надо не забывать выполнять проверку на предмет не изменились ли данные в БД, либо же обновлять по истечению какого-то времени, скажем, если последние обращение было минуту назад, то считаем данные устаревшими и обновляем кеш. 
    19 марта 2014 г. 18:33
  • Да, кэширование это то, что нужно. Думаю реализовать это дело и на сервере и на клиенте. 

    Для тех кто хочет разобраться с кэшем: 

    http://msdn.microsoft.com/ru-ru/library/xsbfdd8c(v=vs.100).aspx

    20 марта 2014 г. 11:18