如何在ajax密集型应用程序中处理大量HTML数据
How do I process large amounts of HTML data in an AJAX-heavy application?
我应该让我的服务器返回JSON数据,然后让JavaScript解析它来直接创建/呈现HTML,或者我应该让我的服务器端代码直接返回HTML,这可以由JavaScript直接放置。
想法吗?
呈现代码服务器端(例如,在Rails的AJAX中完成),然后将视图返回到客户端,在那里它将被放置。
然后分析代码。如果结果太慢,则返回JSON并考虑一种在客户端呈现它的方法。
你的优先级应该是不要让整个事情变得太复杂。
我不喜欢返回生成的HTML。恕我直言,我会返回JSON并使用JQOTE 2之类的东西来处理渲染。让客户端资源处理这项工作。
(旁注:jquote是一个了不起的工具!)
我认为如果您以后不需要这些数据,例如用于过滤、实时搜索等,那么您应该返回HTML。
过早优化是万恶之源。从容易的开始。如果它实在太慢了,那就找一个方法来优化(也许是使用替代方案)。
如果其中一个对您来说不比另一个容易,那么就使用服务器端。我无法想象服务器端脚本语言的操作会比浏览器中的javascript慢。
如果您所要做的只是呈现HTML,那么直接使用服务器(php)可能要容易得多。否则,您必须先用php将其转换为JSON,然后再用JS将其转换回来。这至少是一个额外的步骤和 javascript端额外的工作。
我将投票赞成你提出的第一个方法。
JSON序列化的数据大小比(X)HTML小,你的第一种方法节省了很多CPU周期,网络流量,内存和加速你的客户端,最终在一个响应式的用户界面。
只要发送JSON格式的数据,然后在客户端用JavaScript解析它,这样在服务器上的事情就会更简单,渲染的事情就会委托给客户端web浏览器。
没有唯一的正确答案;这取决于你的期望。
如果您希望应用程序是可访问的(例如:由屏幕阅读器处理),被搜索引擎机器人拾取,或者希望UI在请求和用户之间可缓存,您将不得不使用服务器生成的HTML,而不是动态加载。如果对生成的HTML使用缓存,就可以节省很多时间,而无需不断地重新呈现。服务器端工具比客户端工具多,但随着JS的发展,这种说法越来越不正确。
OTOH,使用一些JS库生成由客户端呈现的JSON可以真正帮助您的服务器减少负载。您正在将渲染工作分发给客户端,但这确实使您无法控制。如果你有一个JS繁重的解决方案,而客户端不能处理JS(屏幕阅读器,搜索引擎机器人等),那么网站应该优雅地降级,或者期望有一些受众无法查看它。这些受众对你来说可能微不足道,但这是你需要了解的。只要你很好地管理渲染(设置最小大小的区域,等待图标等),那么你就可以让客户端渲染和服务器端一样流畅(当比较视觉渲染步骤时)。生成JSOn还为您提供了更多的灵活性,因为定义了更多的接口或其他非ui客户端变得重要。
这取决于你想要达到的目标。如果你正在编写一个移动应用程序,你可能想要节省带宽并使用客户端模板(就像一个例子:John Resig的微模板)。如果带宽对你来说不是那么重要,我会使用服务器端模板来生成你需要的HTML。
在我看来,这都是关于响应。您的服务器总是能够比UA更快地处理数据,但是两者之间的差异可以忽略不计。如果是这种情况,那么我建议将JSON传递给UA,然后使用客户端代码来完成这些繁琐的工作。这样,您就可以在服务器和客户端之间清晰地分离关注点,允许您在将来向不同的客户端端点交付JSON数据,而无需修改服务器端代码。
但是,如果在客户端进行数据处理会对性能造成重大影响,那么直接将HTML交付给客户端可能更有意义。然而我强烈建议您仍然交付JSON,只交付给您的服务器端HTML创建功能(而不是UA),这样您仍然可以将JSON数据交付给多个端点,而无需在未来更改核心代码。
- 导入jQuery脚本获胜'我不处理html文件
- 处理HTML字段集's大小
- 处理HTML类型'电子邮件''url'使用JavaScript
- Ajax在使用onclick选项时无法处理HTML表单中的提交按钮
- 如何使用angular和bindings处理html(?)
- 处理html列表中的javascript对象
- NiceScroll无法处理Html
- Rails控制器操作可以同时处理html和javascript请求吗
- 如何在javascript中处理html数组元素,并使用ajax将它们传递给控制器
- 如何使用Javascript或Jquery处理HTML中的图像
- 简单的jquery模态插件,如何处理html内容
- 如何使用javascript处理HTML
- webView加载URL无法处理HTML按钮单击
- AngularJs过滤器:$viewValue没有处理html转义
- 以下使用JavaScript处理html<输入>构成任何风险
- 处理 HTML/Javascript 中的数千个列表元素
- 使用数字id javascript处理html输入元素
- 我可以处理HTML<按钮/>要素
- iOS5 Mobile Safari:使用语音助手处理HTML输入文本上下键
- 无法获取jQuery可调整大小的API来处理html表