【问题标题】:Is it expensive to do a WHOIS lookup using TcpClient.Connect() in C#?在 C# 中使用 TcpClient.Connect() 进行 WHOIS 查询是否昂贵?
【发布时间】:2011-01-20 06:43:02
【问题描述】:
一位客户要求我们根据访问该网站的用户的 IP 在其 ASP.NET 网站的主页上进行动态 whois 查询。
实现将类似于此处描述的内容:
http://www.aspheute.com/english/20000825.asp
但是,我注意到此代码连接到 whois.networksolutions.com。我认为如果我们在每次页面加载时都启动与该远程服务器的连接,这可能无法很好地扩展。
例如,假设有 1000 个不同的用户访问主页 - 这将导致启动大量连接。
对此有什么想法吗?
【问题讨论】:
标签:
c#
asp.net
scalability
tcpclient
whois
【解决方案1】:
是的,这可能很耗时。 “昂贵”的数量实际上取决于您的服务器与远程服务器之间的网络连接以及远程服务器的响应时间。如果您的请求彼此没有不同,则可以考虑缓存响应(查询最终用户输入的域不太可能出现这种情况)。更大的问题是,如果远程服务器看到来自单个 IP 地址的太多连接,它可能会阻止您。
【解决方案2】:
我可能会询问客户端反向 DNS 是否可行...这样您就可以利用 DNS 服务器的缓存功能来减少互联网流量。除非您没有内部 DNS,否则您将利用 ISP 的 DNS 服务器的缓存功能。
不过,whois 和 DNS 之间有很大的区别,所以客户需要什么。
但要回答您的直接问题...也许您可以为此数据创建某种缓存,以减少您必须为浏览网站各个页面的单个主机执行的重复搜索次数?
【解决方案3】:
除了缓存之外,您可能还希望此查找是异步的,因此任何延迟都不会阻碍页面服务。