Установите срок действия .net SqlDatasource Cache на определенное время, каждые 10 минут на часах. - PullRequest
0 голосов
/ 14 мая 2018

У меня есть веб-сайт .net, браузерная игра, в которой вся игра «переворачивает ход» каждые 10 минут, сам ход переворота занимает 5-10 секунд. У меня есть много GridView, связанных с относительно тяжелыми запросами в объектах sqldatasource, которые обновляются сотнями игроков между ходами. Практически ничего не меняется в этих сетках между ходами, все реальные обновления происходят во время переворота поворота, поэтому я хочу включить кэширование в этих сетках, потому что они являются относительно тяжелыми запросами. Однако повороты включаются каждые 10-ю минуту на часах, а не «каждые 10 минут». Я не могу просто установить CacheDuration равным 600, потому что в зависимости от того, когда вы впервые обращаетесь к конкретной сетке, через 10 минут может пройти еще один ход.

Мне нужен способ динамической установки CacheDuration, чтобы он истекал прямо в момент 10-й минуты на ударах часов. Я представляю пару способов сделать это:

Я мог бы проверить, существует ли Cache для конкретного связанного источника sqldatasource, и если он не проверяет текущее время, и соответственно установить длительность кэша, чтобы он истекал на 10-й минуте.

ИЛИ

Возможно, если есть чистый способ очистки всех кэшей в наборе sqldatasources, когда какая-либо страница загружается на другом обороте, чем в последний ход. Уже есть переменная уровня приложения, которая отслеживает, что включает игры, и определяет, когда страница загружается в другой поворот. Это может вызвать такую ​​очистку кэша.

1 Ответ

0 голосов
/ 16 мая 2018

Веб-приложения Asp.Net ориентированы на события, поэтому при загрузке страницы вы хотите ...

  1. настроить таблицу для регистрации события истечения срока действия вашего кэша
  2. используйте запрос, чтобы проверить таблицу журналов при загрузке страницы, чтобы узнать, не истек ли срок действия кэша в зависимости от текущего времени.То есть: если последний раз, когда срок действия кэша истек, был до последней 10-минутной отметки, то он должен быть истек сейчас.
  3. запускает срок действия кэша, если это необходимо.

Другими словами, не имеет значения, активен ли кэш, если его не читают никакие страницы, но когда кто-то обращается к нему.если вам просто нужно убедиться, что ваше последнее событие истечения было в текущем 10-минутном окне.

Дайте мне знать, если есть конкретный код, с которым я мог бы помочьПочтовый индекс пытается мне оценить.

HTH

...