如何在AJAX繁重的应用程序中处理大量HTML数据?

时间:2011-05-05 13:35:06

标签: php javascript ajax

我是否应该让我的服务器返回JSON数据,然后让JavaScript解析它以直接创建/呈现HTML,或者我应该让我的服务器端代码直接返回HTML,这可以直接由JavaScript放置。

思想?

8 个答案:

答案 0 :(得分:3)

渲染代码服务器端(例如,在Rails的AJAX中完成),然后将视图返回到将放置它的客户端。
然后分析您的代码。如果结果太慢,则返回JSON并考虑将其呈现给客户端的方法。

你的优先事项应该是不要让整个事情过于复杂。

答案 1 :(得分:3)

我不喜欢返回生成的HTML。恕我直言我会返回JSON并使用JQOTE 2之类的东西来处理渲染。让客户资源处理这项工作。

(旁注:JQOTE是一个了不起的工具!)

答案 2 :(得分:2)

我认为如果您以后不需要这些数据,例如对于过滤,动态搜索等,您应该返回HTML。

答案 3 :(得分:1)

过早优化是万恶之源。从更容易的事情开始。如果它太慢,找到一种优化方法(可能通过使用替代方案)。

如果一个人不比另一个人容易,请转到服务器端。我无法想象服务器端脚本语言操作比浏览器中的javascript慢的情况。

如果您只需渲染HTML,那么直接使用服务器(php)可能会更容易。否则,您必须首先使用php将其转换为JSON,然后使用JS将其转换回来。这至少是javascript方面的额外步骤额外工作。

答案 4 :(得分:1)

我会投票支持你的第一个提议方法。

JSON序列化数据大小小于(X)HTML,并且您的第一种方法可以节省大量CPU数据,网络流量,内存并加速客户端,最终以响应式用户界面结束。

只需以JSON格式发送数据并在客户端使用JavaScript解析数据,这样服务器中的内容就会更简单,并且会将内容委托给客户端Web浏览器。

答案 5 :(得分:1)

没有一个正确答案;这取决于你的期望。

如果您希望应用程序可访问(即由屏幕阅读器处理),搜索引擎机器人选择或希望UI可在请求和用户之间缓存,则必须使用服务器生成的HTML而不是动态加载。如果您为生成的HTML使用缓存,则会在没有不断重新渲染的情况下获得大量的里程数。服务器端工具比客户端更多,但随着JS的发展,它变得越来越不真实。

OTOH,使用一些JS库生成由客户端呈现的JSON,可以真正帮助您的服务器减少负载。您正在将渲染工作分发给客户端,但这确实可以控制您的工作。如果你有一个JS重的解决方案,并且客户端无法处理JS(屏幕阅读器,搜索引擎机器人等),那么该网站应该优雅地降级或期望有一些无法查看它的受众。那些观众对你来说可能是微不足道的,但这是值得了解的。只要您很好地管理渲染(设置区域的最小大小,等待图标等),您就可以使客户端渲染与服务器端一样流畅(比较视觉渲染步骤时)。随着更多接口的定义或其他非UI客户端变得重要,生成JSOn还可以提供更大的灵活性。

答案 6 :(得分:0)

这取决于你想要达到的目标。如果您正在编写移动应用程序,则可能需要节省带宽并使用客户端模板(仅作为示例:John Resig's micro templates)。如果bandwith对你来说不那么重要,我会使用服务器端模板来生成你需要的HTML。

答案 7 :(得分:0)

在我看来,这完全取决于响应能力。您的服务器始终能够比UA更快地处理数据,但两者之间的差异可以忽略不计。如果是这种情况,那么我建议将JSON传递给UA,然后使用客户端代码来执行脏工作。这样,您就可以清楚地分离服务器和客户端之间的关注点,从而允许您将来将JSON数据传递到不同的客户端端点,而无需修改服务器端代码。

但是,如果在客户端进行数据处理会对性能造成重大影响,那么将HTML直接传递给客户端可能会更有意义。 HOWEVER 我强烈建议你仍然只提供JSON,只提供给你的服务器端HTML创建功能(而不是UA),这样你仍然可以将JSON数据提供给多个端点,而无需改变核心代码。未来。