如果您使用 asp.Net Ajax 调用 .net Web 服务,为什么要完成 3 个额外的 HTTP 请求?

发布于 2024-10-30 07:24:08 字数 386 浏览 0 评论 0原文

当我阅读博客 使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

惯饮孤独 2024-11-06 07:24:08

也许理解差异的最好方法是下载这两个示例,然后自己在 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:

enter image description here

Using jQuery:

enter image description here

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 the YourService.YourMethod() calling syntax, vs. specifying the YourService.asmx/YourMethod path yourself. The difference in convenience is negligible; not worth the overhead IMO.

空‖城人不在 2024-11-06 07:24:08

我相信作者指的是加载 MS AJAX 库本身所需的请求。因此需要额外的 100KB。

I believe the author was referring to the requests needed to load the MS AJAX library itself. Hence the extra 100KB.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文