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