使用ASP.NET MVC 3从网站检索和缓存HTML

kas*_*rhj 1 asp.net-mvc asp.net-mvc-3

我想要一个局部视图,显示一些不受我控制的网站的东西.网站上的数据只能通过HTML获得,因此我只能通过查询网站和解析HTML来检索它.(该网站包含50个元素的列表,我只想要前10个.)现在,来自网站的数据不会经常变化,所以我想我可以每小时检索一次HTML,并显示一个缓存在我的网站上的版本.

如何在ASP.NET MVC 3中完成此操作?

Mat*_*ott 5

暂时忽略MVC3要求,你应该使用WebClient从网站上获取html.你可以这样做:

var client = new WebClient();
var html = Encoding.UTF8.GetString(client.DownloadData("http://www.somedomain.com"));
Run Code Online (Sandbox Code Playgroud)

如果您需要定制您的请求,我建议您查看HttpWebRequest,HttpWebResponse.既然你可以获取html,你需要考虑你的缓存机制,可能在ASP.NET运行时?

public ActionResult GetHtml()
{
    if (HttpRuntime.Cache["html"] == null)
        GetHtmlInternal();

    return Content((string)HttpRuntime.Cache["html"], "text/html");
}

private void GetHtmlInternal()
{
   var html = // get html here.

   HttpRuntime.Cache.Insert("html", html, null, DateTime.Now.AddMinutes(60), Cache.NoSlidingExpiration);
}
Run Code Online (Sandbox Code Playgroud)