我们有一个网站托管在地球的一侧和另一侧的客户。
它的 asp.net 和表单上有大量复杂的业务规则。因此,在很多情况下,用户采取了一些行动,网站发回消息以根据业务规则更改表单。
所以现在客户提示网站滞后。
对我们来说,延迟几乎不明显,所以我认为这里几乎是在谈论纯粹的地理距离。
有哪些提高性能的选项...
a) 将镜像数据中心放置在更靠近客户所在国家/地区的位置 b) 重写整个应用程序,尝试完全在客户端脚本中实现业务规则(可能不可行)
除此之外,是否有任何提示或技巧可以提高性能。
我们已经在 db 和 web 服务器之间进行了大量缓存,但在这种情况下,这不是问题,因为它们是并排的......
问题是客户端和服务器之间的 30,000 英里往返......
(我注意到反过来也很慢 - 当我在客户所在国家/地区使用网站时,它们似乎总是很慢......)
最佳答案
我也有这个问题。我的一些客户在新西兰,而我在英国。除非你算上深空探测器,否则这是一次尽可能大的往返。
从这里开始:
http://www.aspnet101.com/2010/03/50-tips-to-boost-asp-net-performance-part-i/ http://www.aspnet101.com/2010/04/50-tips-to-boost-asp-net-performance-part-ii/
其中许多是服务器端提示,但这些页面中可能对您有所帮助的特别提示包括:
- 禁用 ViewState where appropriate
- 使用 CDN以便用户从附近的服务器获取尽可能多的内容,例如jQuery 脚本文件、Azure 服务。
- 将您的图片更改为 sprites
- minify your js
- 验证从用户收到的所有输入 - 在客户端可以节省不必要的往返行程。 jQuery validation is excellent for this .
- Use IIS Compression - 减少下载大小
- 尽可能使用 AJAX - 如果您还没有使用 AJAX,那么它最有可能改善您的往返行程大小。我的偏好是(你猜对了...)jQuery AJAX
另外,在 Firefox 中,安装 YSlow Add-on 。这将为您提供有关如何改进特定页面的提示
如果所有这些还不够,并且您可以负担得起时间和投资,那么将您的应用程序转换为 ASP.NET MVC 将使您的页面在带宽上更轻松。您可以逐步执行此操作,首先更改最有问题的页面,然后随着时间的推移替换您的网站,而不会影响您的用户。但只有在用尽了您问题的所有答案发布的许多想法之后才这样做。
如果您要进行重写,另一种选择是考虑使用 Silverlight 的富 Internet 应用程序。这样,您就可以在客户端浏览器中执行适当的 C# 业务规则,并且只返回小数据包的服务器。
最明显的短期解决方案是在与您的客户相同的国家/地区购买一些托管空间,但如果您在本国有其他客户,则必须考虑数据库同步。
关于asp.net - 客户端服务器性能 - 非常远的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3422881/