1

我正在使用 asp.net Mvc-3 C# 开发分类广告 Web 应用程序。

每个广告都可以在 facebook、twitter、google plus、linkedin 等社交媒体上分享。

我正在计算广告在这些网站上共享的次数并将此记录保存在数据库中。

使用此功能

 string jsonString = new System.Net.WebClient().DownloadString(URL-of-ad);
 var serialize= new System.Web.Script.Serialization.JavaScriptSerializer();
 var dictionary = serialize.Deserialize<Dictionary<string, string>>(jsonString);
 var twitter = dict["count"];
 var facebook= dict["share_count"];

// calculating for other website by this function

这个函数运行良好,但每个广告都非常耗时。我有数千个广告,所以我必须循环数千次并为每个广告调用这个函数。

我一天调用这个函数两次。

还有其他更好更快的方法来完成这项任务吗?

请提出您的建议。

4

2 回答 2

1

您可能会考虑改进您的设计

1 - 创建一个 Windows 服务并将其设置为每天运行两次,最有可能找出您网站上的流量何时非常少。

2-将共享计数逻辑移动到 Windows 服务中,这将在另一个进程中执行并释放您的主应用程序。

3-下载取决于网络速度的东西,所以让yopur下载异步而不是同步。

于 2013-03-22T07:25:44.023 回答
1

几点建议:

  1. 并行运行,例如使用Parrallel.ForEach,传入添加的 URL,或异步版本,例如DownloadStringAsync。两者都将同时运行多个下载。
  2. 加载显示添加的页面时运行此命令。加载 add 然后对服务器进行 Web 服务调用以获取countand share_count。它可能需要更多的工作,但它会更新,如果每个添加都很少显示,这可能会更有效。

我假设您在页面创建期间没有运行它,但如果您是,请按照 Saurabh 的建议将其移动到单独的服务或进程中。

于 2013-03-22T07:28:41.150 回答