如果您使用 asp.Net Ajax 调用 .net Web 服务,为什么要完成 3 个额外的 HTTP 请求?
当我阅读博客 使用 jQuery 来使用 ASP 时。 NET JSON Web 服务
我见过这样的论点:
通过使用 jQuery 直接调用 Web 服务,我们已经消除了超过 100 KB 的 JavaScript 和三个额外的 HTTP 请求。”
“ 对 .NET Web 服务的 ASP.NET AJAX 调用需要 3 个额外的 HTTP 请求?这些要求是什么? (我想知道在这种情况下 jQuery 如何通过较少的 HTTP 请求来管理调用)。
When I was reading the blog Using jQuery to Consume ASP.NET JSON Web Services
I have seen this argument:
"By using jQuery to call the web service directly, we’ve eliminated over 100 KB of JavaScript and three extra HTTP requests. "
Why does the ASP.NET AJAX call to a .NET Web-Service needs 3 extra HTTP requests? What are those requests? (I wonder how jQuery manages the call with lesser HTTP requests in this case).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
也许理解差异的最好方法是下载这两个示例,然后自己在 Firebug、Fiddler 或类似工具中研究它们。
不过,这两个页面的网络流量屏幕截图都非常清楚(这两个页面都执行完全相同的操作,一个使用 jQuery,一个使用 MicrosoftAjax.js):
使用 MicrosoftAjax.js:
使用 jQuery:
I不知道为什么现在差异只有 90k(但也有一个额外的 HTTP 请求)。我认为这与 3.5/4.0 下提供的 MSAjax.js 脚本版本与我编写该脚本时使用的 2.0 脚本版本有关。
即使您的缓存配置正确并且缓存了那些 WebResource/ScriptResource 脚本,也很难获得缓存的 JS 服务代理(上面屏幕截图中的
jsdebug
),您必须每次都下载一次您通过 ScriptManager 引用的相应 ASMX/WCF 服务。这些也可能变得相当大(看看 YourService.asmx/js 或 YourService.asmx/jsdebug 以获得一个想法),而 jQuery 方法不需要服务代理。整个代理的存在只是为了启用YourService.YourMethod()
调用语法,而不是自己指定YourService.asmx/YourMethod
路径。便利性上的差异可以忽略不计;在我看来,不值得花费这么多的开销。Probably the best way to understand the difference is to download both examples and poke around at them yourself in Firebug, Fiddler, or similar.
These screenshots of the network traffic for both make it pretty clear though (both of these pages do exactly the same thing, one with jQuery and one with MicrosoftAjax.js):
Using MicrosoftAjax.js:
Using jQuery:
I'm not sure why the difference is only 90k now (but there's also an additional HTTP request too). Something to do with the version of the MSAjax.js scripts served under 3.5/4.0 vs. the 2.0 ones I was using back when I wrote that, I think.
Even if your caching is configured correctly and those WebResource/ScriptResource scripts are cached, it's difficult to get the JS service proxy cached (
jsdebug
in the screenshot above), which you'll have to download once for every corresponding ASMX/WCF service you've referenced through the ScriptManager. Those can get fairly large too (take a look at YourService.asmx/js or YourService.asmx/jsdebug to get an idea), whereas no service proxy is necessary for the jQuery approach. That whole proxy exists simply to enable theYourService.YourMethod()
calling syntax, vs. specifying theYourService.asmx/YourMethod
path yourself. The difference in convenience is negligible; not worth the overhead IMO.我相信作者指的是加载 MS AJAX 库本身所需的请求。因此需要额外的 100KB。
I believe the author was referring to the requests needed to load the MS AJAX library itself. Hence the extra 100KB.