1

У меня есть эта безумно большая база данных, я хочу распечатать данные, однако, поскольку база данных довольно большая, обычно она занимает около 10-20 минут.ASP.NET и фоновое кэширование

На самом деле я не хочу, чтобы веб-пользователи дождались, что долго будет отображаться страница, и задавались вопросом, есть ли способ предварительно кэшировать данные sql глобально каждые 1 час, чтобы все могли видеть?

Я попытался найти google для aspx и фоновых работников, и большинство anwsers, которые я нахожу, заключается в том, что Asp не предназначен для этого, и мне нужно использовать сервис Windows .. но как тариф, как я знаю, службы windows не поддерживает доступ к веб-браузеру? или есть способ запустить WebServer с помощью ASPX из службы Windows?

я никогда не работал с ASPX раньше, и не получил ни малейшего представления, что я делаю, но у меня есть около 2000 часов в vb.net

+3

Если ваш запрос занимает 20 минут, чтобы выполнить его, вам нужно будет это сделать. Сделайте, например, вторую временную базу данных, которая хранит окончательные данные в плоской таблице, обновляйте эти плоские данные каждые 6 часов и просто используйте эту плоскую таблицу для их чтения. – Aristos

ответ

1

проверить эту статью MSDN: How to: Add Items to the Cache.

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

Cache.Insert("yourBigData", bigDataObject, _ 
    Nothing, System.Web.Caching.Cache.NoAbsoluteExpiration, _ 
    New TimeSpan(0, 60, 0)) 

Затем в коде, когда вы хотите получить доступ, что большие данные, проверить кэш первого :

If(Cache("yourBigData") IsNot Nothing) Then 
    ' Get your data out of the cache, and use that 
    Dim yourBigData As DataTable = CType(Cache("yourBigData"), DataTable) 
Else 
    ' retrieve the data and add it to the cache again 
End If 

Для более широкой перспективе, см this MSDN article on "Caching Application Data", особенно это:

AS P.NET имеет мощный, легкий в использовании механизм кэширования, который позволяет хранить объекты в памяти, которые требуют значительных ресурсов сервера для создания

Это похоже именно ваш сценарий.

+0

Приносим извинения, если код VB.NET имеет синтаксические ошибки - я больше не пишу VB. – jadarnel27

+0

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

+0

Вы правы, это просто вызовет проблему медленности. Аристос оставил хороший комментарий по этому вопросу с другим подходом (используйте базу данных, чтобы сделать запрос менее дорогостоящим). – jadarnel27

Смежные вопросы