我正在使用asp.net Mvc-3 C#开发分类广告网络应用程序。
每个广告都可以在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
这是功能正常,但每个广告都非常耗时。我有数千个广告,所以我必须循环一千次,并为每个广告调用此功能。
我一天两次调用此功能。
还有其他更好,更快的方法来完成这项任务吗?
请提出您的建议。
答案 0 :(得分:1)
您可能会考虑改进设计
1 - 创建一个Windows服务并将其设置为每天运行两次,最有可能发现您网站上的流量非常小。
2-将共享计数逻辑移动到Windows服务中,该服务将在另一个进程中执行,并释放主应用程序。
3-下载依赖于网络速度的内容,以便yopur下载异步而不是同步。
答案 1 :(得分:1)
一些建议:
Parrallel.ForEach
,传入添加的URL或异步版本,例如DownloadStringAsync。两者都会同时运行多个下载。count
和share_count
。它可能需要更多工作,但它会更新,如果很少显示每个添加,这可能会更有效。我假设您在页面创建期间没有运行此功能,但如果您是,请将其移至Saurabh建议的单独服务或流程中。