客户端还是服务器端处理?

2022-08-30 23:26:43

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

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

感谢您的帮助


答案 1

恭喜您迁移到动态网站!我想说的是,您必须满足以下条件才能进行客户端布局(不用说,您应该始终执行诸如过滤数据库查询和控制访问权限服务器端之类的操作):

  • 客户端浏览器和连接功能对于绝大多数用例来说都是微不足道的
  • SEO和移动/传统浏览器降级并不是一个大问题(当你合成HTML服务器端时要容易得多)

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

最后,如果有人想与朋友分享链接或为自己添加链接书签,则生成永久URL有点困难。我在这里的博客文章中介绍了一个解决方法,或者你可以有一个突出的“永久链接”按钮,显示动态渲染的永久链接。

总的来说,特别是在开始时,我会说使用更犹太洁食,更好支持,更教程化,传统的方法来将HTML服务器端放在一起。然后在这里和那里浸入一些AJAX(也许从表单验证或自动完成开始),然后继续。

祝你好运!


答案 2

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

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

Javascript是一种被滥用的语言,语法不幸。你到底为什么要加载一个页面,然后发出AJAX调用来加载一些JSON对象以推送到表中,这超出了我的范围。这样做的理由不多。

Javascript(和jQuery)用于最终用户增强。让事情滑落,闪烁,消失!它不适用于最温和负载下的数据处理。最终用户的体验将是废话,因为当你拥有一台功能无限强大的服务器,甚至专门为此而设计时,你依靠他们的机器来处理所有数据。