AJAX - 使用JSON vs echo HTML

时间:2012-11-13 01:41:09

标签: javascript jquery html ajax handlebars.js

我有以下的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。我在这里做的是echo我在model.php中想要的所有HTML。

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

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

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

由于

4 个答案:

答案 0 :(得分:3)

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

如果你真的有意识关于表现,你应该precompile your templates

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

答案 1 :(得分:2)

我不知道“行业标准”必然是判断这类事情的最佳方式。我猜你的典型开发人员根本不知道handlebars.js是什么,并且只会像现在一样将HTML加载到div中。

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

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

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

相比之下,带宽是使网站浏览者感到愉快的重要因素。发送重的HTML响应,特别是重复时,会强制用户每次等待没有良好的互联网连接。

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