客户端或服务器端处理?

所以,我是动态网页设计的新手(我的网站大多是静态的,有些PHP),我正在尝试学习网页开发的最新技术(似乎是AJAX),我想知道,如果你要传输大量数据,最好是在服务器上构建页面并将其“推送”给用户,还是更好地“拉”所需的数据并使用JavaScript在客户端创建HTML?

更具体地说,我使用CodeIgniter作为我的PHP框架,使用jQuery for JavaScript,如果我想向用户显示数据表(动态),那么使用CodeIgniter格式化HTML会更好吗(创建表格,将CSS类添加到元素等。),或者更好的方法是使用JSON提供原始数据,然后使用jQuery将其构建到表中? 我的直觉说要做客户端,因为它可以节省带宽,并且页面可能会加快所有这些浏览器现有的新JavaScript优化,然而,对于不使用JavaScript的人来说网站会破坏…

谢谢您的帮助

恭喜您搬到动态网站! 我会说你必须满足以下条件才能进行客户端布局(不用说你应该总是做过滤数据库查询和控制访问权限服务器端):

  • 客户端浏览器和连接function可以满足绝大多数用例的要求
  • 搜索引擎优化和移动/遗留浏览器退化不是一个大问题(合成HTML服务器端时更容易)

即使这样,做客户端布局也会使测试变得更加困难。 它还会产生相当麻烦的同步问题。 使用加载部分内容的AJAX站点,如果页面的一部分搞砸了,您可能永远不会知道,但是通过常规的服务器端组合,每个请求都会重新加载整个页面。 它还为错误/超时处理,会话/ cookie处理,缓存和导航(浏览器后退/前进)添加了额外的挑战。

最后,如果有人想与朋友分享链接或为自己添加链接,那么制作perma-URL有点困难。 我在这里的博客文章中查看了一个解决方法,或者您可以使用一个突出的“固定链接”按钮来显示动态呈现的永久链接。

总的来说,特别是在开始的时候,我会说更合适的kosher,更好的支持,更多的tutorialed,传统的方法来整合HTML服务器端。 然后在这里和那里浸入一些AJAX(可能从表单validation或自动完成开始),然后继续前进。

祝好运!

在服务器端进行繁重的工作好得多。

在CodeIgniter中,您可以创建一个视图,循环遍历表中的所有行,添加类或您需要的任何其他内容。 在Javascript中完全没有理由这样做。

Javascript是一种病态滥用的语言,具有不幸的语法。 为什么你想要加载一个页面,然后发出一个AJAX调用来加载一些JSON对象以推入一个表格超出我的范围。 没有理由这样做。

Javascript(和jQuery)用于最终用户增强。 使事物滑动,闪烁,消失! 即使是最轻微的负载也不适用于数据处理。 最终用户体验将是废话,因为当您拥有一台function无限且甚至专门为此设计的服务器时,您依靠他们的机器来处理所有数据。

最好尽可能在服务器端做,因为1)你不知道客户端是否会启用JavaScript,2)你不知道客户端处理的速度有多快。 如果他们的计算机速度很慢而你让他们处理整个网站,那么他们就会被淘汰。 JavaScript / jQuery仅用于增强您的网站,而不是用于处理它。

你得到了正确的权衡。 但是,请记住,您可以在服务器端激活压缩,这可能会增加重复标记,从而以较小的带宽成本格式化表。

还要记住,编写适用于所有浏览器(包括手持设备)的Javascript比在PHP中使用相同的服务器端更复杂。 并且不要忘记“新的JavaScript优化”不适用于手持设备的浏览器。

这取决于您的目标市场和您网站的目标。

坚信使用客户端可以从服务器卸载工作。 显然,重要的是你正确地做到这一点,因此它对最终用户来说仍然很快。

在no-js支持很重要的站点(公共网站等)上,您可以回退到服务器。 在这些情况下,您最终会将代码加倍,但收益非常有益。

对于高级Web应用程序,您可以决定将JS作为一项要求是否值得失去(非常)少数用户的交易。 对我来说,如果我对目标市场有一定的控制权,我就会把它作为一项要求并继续前进。 花费大量时间来支持一小部分潜在受众几乎没有任何意义。 (除非花费在可访问性上的时间不同,并且非常重要,无论您的网站上有多少人适合此群组。)

需要记住的重要一点是尽可能少地触摸DOM以完成工作。 这通常意味着构建一个HTML字符串并使用单个append操作将其添加到页面中,然后循环遍历一个大表并一次添加一行。

我做了大量的AJAX应用程序开发,我可以根据自己的经验告诉你。 两者之间的良好平衡是关键。

做原始数据服务器端,但使用javascript进行您需要的任何修改。 例如分页,列排序,行条带化等。

我非常喜欢在AJAX中做所有事情……但是使用AJAX做这件事有一些短暂的下降,那就是搜索引擎优化。 搜索引擎不读取javascript,所以为了你的网站的页面排名,我会说所有数据服务器服务器端,然后格式化,使客户端看起来很酷。

我非常喜欢AJAX的原因是因为它大大加快了用户对APP的使用速度,因为它只加载你需要加载它所需的数据,而不是每次你做某事时加载整个页面……你可以做一大堆的东西,比如隐藏/显示行/列(我们在这里谈论表操作,因为你提到了一个表),甚至用这些显示/隐藏操作添加删除操作,当你点击删除行或按钮它不仅可以直观地删除该行,而且还可以通过对服务器端代码的AJAX调用在数据库中删除该行。

简而言之。

原始数据:服务器端向客户端发送html布局中的原始数据(表结构化数据的表,但是我在div和其他灵活的html标签中执行其他所有操作,只为列/行样式数据执行表)

数据格式化:客户端,它还包括与数据交互的任何方式。 添加到它,从中删除,以不同的方式排序等。这实现了两件事。 SEO和用户体验(UX)。