Breeze Query Slow, но Ajax-вызовы быстрые

0

У меня есть одностраничное приложение с репозиторией и единицей работы. Реализация аналогична реализации проекта TempHire. Я загружаю свои метаданные в shell.js. Моя единица работы и хранилище находятся в разных проектах и упоминаются в моем проекте. Кроме того, моя единица работы использует EFContextProvider для получения данных.

Однако мои запросы выполняются очень медленно. Запросы Breeze очень медленные (и очень часто тайм-аут). Запрос типа unitofwork.objectname.fetch() (где fetch получает данные из пути, controllername/Actionname) займет много времени. Однако мой запрос ajax выполняется быстро. Если я сделаю один и тот же вызов одного и того же действия controllername/Actionname, ответ будет очень быстрым.

Я не уверен, предоставил ли я достаточную информацию (поскольку я не знаю, где искать проблему), но уточнит, если это необходимо.

Теги:
performance
single-page-application
breeze
hottowel

1 ответ

1

Сначала проверьте и убедитесь, что метаданные извлекаются только один раз. Это должно произойти непосредственно перед тем, как будет выполнен первый запрос. Если вы видите, что это происходит снова и снова, в вашем приложении происходит что-то еще. Есть еще несколько сообщений на SO, где люди случайно сделали это.

Таким образом, сеть состоит в том, что ваш FIRST-запрос на любом EntityManager может быть медленным, потому что он выполняет как запрос метаданных, за которым следует запрос данных, но каждый другой запрос после этого момента должен быть довольно быстрым.

  • 0
    Первый запрос также может быть медленным, пока веб-API и EF ускоряются. Но если это постоянно медленно, вы должны открыть вкладку сети в инструментах браузера (или Fiddler) и посмотреть, что течет по проводам. Много запросов? Ожидаемое количество? Точно один запрос метаданных или несколько? А сколько объектов вы возвращаете в запросе, кстати?
  • 0
    manager.fetchMetadata () выдаст вам ошибку (что-то вроде не могу сделать это дважды), если вы вызываете это снова и снова :)
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню