Timer is not a possibility inside web application...
What you may do is to store your response on the Application level accompanied with a time stamp...If time stamp is older than the period you want you should reload your response and store it instead of the current, otherwise return the existing one...
if((DateTime.UtcNow - Application["LastQuery"]).TotalSeconds > 300)
{
Application["Response"] = LoadData();
Application["LastQuery"] = DateTime.UtcNow;
}