Кэширование большого количества данных в global.asax Application_Start, роль Windows Azure - PullRequest
2 голосов
/ 25 марта 2011

В настоящее время я выполняю тонну работы в Application_Start, и для кэширования двух гигабайт данных в память требуется час или два, чтобы приложение работало эффективно.

Используя этот метод, веб-сайт AzureРоли (ы) недоступны, пока эти процессы не будут завершены.Я вставляю в кеш HTTPRuntime, поэтому не могу использовать методы WebRole.cs OnStart () или Run () (они не имеют доступа к этому кешу).

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

Большое спасибо, -Kevin

Ответы [ 2 ]

3 голосов
/ 25 марта 2011

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

  1. Вы можете переключиться с предварительного кэширования на отложенное кэширование
  2. Если вам необходимо выполнить предварительное кэширование, вы можете хранить кэш в каком-то постоянном хранилище, но рядом с вашим сервером.,Для Azure у вас есть выбор между таблицей или хранилищем BLOB-объектов и SQL Azure.С постоянным кешем вы не загружаете его каждый раз, когда обновляется или перезапускается ваш экземпляр роли.
  3. Если вы немного подождете, AppFabric Cache обеспечит вам большую гибкость и масштабируемость, поэтому вам не нужно будет поддерживать отдельный кэш для каждого из ваших экземпляров роли.
1 голос
/ 25 марта 2011

Вы можете добавить данные в кэш, используя отдельный поток. то есть создайте отдельный поток и начните кэшировать данные, используя этот поток.

Ваша заявка должна в то же время отлично работать.

...