Я бы так не поступил.Если пользователь задал / ответил на 5000 вопросов, первоначальный вход в систему будет длиться вечно.Если вы хотите кешировать, кешируйте по запросу.Это также облегчит написание драйвера веб-сервиса.
Оберните каждый вызов веб-службы собственным вызовом локальной функции.Перед тем, как делать вызов веб-службы, проверьте базу данных, чтобы узнать, выполняли ли вы этот вызов.Если у вас есть, проверьте время ожидания, чтобы увидеть, истек ли он.если срок действия истек или не задан, обратитесь в службу поддержки и сохраните в db
edit
Некоторый псевдокод.имена функций составлены:
string get_question(questionId)
{
SQL = " SELECT data FROM cache
WHERE service='StackOverflow'
AND proceedure='get_question'
AND username='?'
AND parameters = '?'
AND updated > DATEADD(h, ?, GETDATE())";
// check to see if it exists in db and is not expired
question = db(SQL, currentUser(), questionId, 2); // single parameter is question id, 2 hour timeout
// if question is not null, then return the question from the cache.
if (question != NULL && question != "")
{
return question;
}
//otherwise do the webservice call to get the data.
question = WebServiceCall('get_question',questionId);
// store to database, delete if exists first.
db("DELETE from cache where service='StackOverflow' AND proceedure='get_question' AND username='?' AND parameters = '?'", currentUser(), questionId, 2
db("INSERT INTO cache (service,procedure,parameters,username,data) VALUES(...)");
}