1

我有下面的ajax调用。

jQuery.post('index.php',{
                        'option'    : 'com_one',
                        'controller': 'product',
                        'task'  : 'loadColors',
                        'format'    : 'raw',            
                        'design_id' : design_id,
                        'collar_id' : collar_id                        
                }).success(function(result) { 
                    jQuery('div#color_wrapper').html(result); 
                }).error(function() { 
                    jQuery('div#color_wrapper').html('<h1>ERROR WHILE LOADING COLORS</h1>');
                });

方法 1 它返回大量 HTML。然后将它们分配给div#color_wrapper. 我在这里所做的就是echomodel.php 中我想要的所有HTML。

方法 2 我刚刚知道我可以将数据作为 JSON 对象获取,并使用 JavaScript 模板( handlebarsjs)将它们呈现在页面内。

据我了解,它是客户端处理(方法 2)与服务器端处理(方法 1)。

我的问题是哪种方法更快?哪种方法是行业标准?这两种方法有什么优缺点吗?我应该使用什么方法,为什么?

谢谢

4

4 回答 4

3

我认为 JSON 方法更好,因为连续请求传输的数据更少。

如果你真的很在意性能,你应该预编译你的模板

此外,如果您预编译模板,您甚至不必发送handlebars.js给客户端。您可以向浏览器发送更小的内容handlebars.runtime.js,进一步减少加载时间!

于 2012-11-13T01:43:59.573 回答
2

我不知道“行业标准”一定是判断这种事情的最佳方式。我猜您的典型开发人员甚至不知道 handlebars.js 是什么,并且只会像您当前所做的那样将 HTML 加载到 div 中。

您必须测试哪种方法更快。显然,使用 JSON 会使请求更快并需要更少的带宽,从而更好地提高服务器性能,但执行将最终 HTML 插入文档的总时间必须是您测试的东西。

如果我要做很多 AJAX 调用,并且可以使用像把手这样的模板系统,并且担心服务器性能和带宽,我会倾向于 JSON 方法。

如果我只需要一个一次性的 AJAX 调用,并且只需要一些快速而肮脏的东西并且正在处理一个低流量的网站,我可能会只做 HTML 响应。

于 2012-11-13T01:47:42.670 回答
1

JSON 肯定更好,特别是如果您使用像 Google 的 AngularJS 这样的 MVC 框架。理想情况下,您应该只需要加载一次数据。

于 2012-11-13T01:45:26.210 回答
1

我更喜欢使用第二种方法。

处理时间通常并不重要,无论是服务器端还是客户端。

相比之下,带宽是使网站浏览者愉快与否的重要因素。发送繁重的 HTML 响应,尤其是重复响应时,如果用户没有良好的 Internet 连接,每次都会强制用户等待。

现在是等待鼓励用户退出网页的时候了。

于 2012-11-13T01:53:04.537 回答