我有以下的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)。
我的问题是哪种方法更快?哪种方法是行业标准?这两种方法有什么优点和缺点吗?我应该使用什么方法?为什么?
由于
答案 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响应,特别是重复时,会强制用户每次等待没有良好的互联网连接。
是时候等待鼓励用户退出网页了。