php - 性能基准 : PHP Generated content VS. javascript 和 AJAX 上的 DOM

标签 php javascript ajax soap

对于以下非常简单的任务:从数据库中查询产品列表并将其呈现在网页上, 考虑 2 种设置:

Setup1:PHP 脚本查询。所有内容都建立在服务器上,整个页面返回给客户端。

设置 2:使用 AJAX 请求内容的静态 HTML“页面骨架”。接收到的内容在客户端使用 Javascript 进行解析,并使用 innerHTML 或类似工具呈现。

当然,只有当您有页面、类别和标签供客户用户选择时,第二种设置才有意义。

我需要比较这两者,至少通过:

  • 提供内容所需的时间
  • 用户体验(setup1 整体交付,setup2 分“两部分”交付)
  • 可扩展性 - 当我每天有 100,000 个查询时,设置比较如何

对这个问题的任何想法将不胜感激。

最佳答案

您可能会发现以下问题有帮助: Smarty Vs. Javascript/AJAX

我在回答这个问题时提出了几点:

  • 您应该使用服务器端脚本来显示加载页面时已知的任何数据。在这种情况下,您知道应该显示产品列表。页面加载时应显示问题的答案这一事实。

  • 您应该只使用 AJAX 调用来加载页面加载时未知的动态数据。例如,当您单击 Stack Overflow 上问题或答案下方的“评论”链接时。您想要查看特定问题的评论这一事实在页面加载时是未知的。

  • 访问您网站的核心功能时不应需要 Javascript

  • 当禁用 Javascript 时,您应该优雅地降级功能。例如,Stack Overflow 在禁用 Javascript 的情况下工作得很好。您无法访问实时 Markdown 预览或动态徽章通知,但核心功能仍然完好无损。

  • 对服务器生成的页面的单个 HTTP 请求加载速度明显快于加载页面的请求,该页面进行五到六个额外的 AJAX 调用,尤其是在高延迟连接(如蜂窝网络)。参见雅虎的 Best Practices for Speeding Up Your Website .

您应该将 Javascript 视为一项可能无法启用的额外功能,而不是应该用于构建您网站的关键部分的东西。这条规则也有异常(exception)。如果您想进行某种分页,在其中单击“下一页”按钮并且只有产品列表发生变化,AJAX 可能是正确的选择。但是,您应该确保没有 Javascript 的用户不会被排除在查看整个列表之外。

没有什么比因为 Web 开发人员没有遵守 KISS principle 而无法访问页面更令人沮丧的了。 。以Friendly's Restaurants为例.我想查看 their menu当我在商场的时候,我在我的 iPhone 上加载了他们的网站,却发现如果没有 Flash,你几乎无法获得关于这家餐厅的任何有意义的信息。很高兴有精美的菜单,到处都是飞扬的甜点,但最后,我只是想看看他们菜单上的项目。我不能那样做,因为他们需要 Flash。在这种情况下,服务的优雅降级会有所帮助。

如果没有 Javascript,网络上的一些事情就无法有效地完成。显示产品列表不是其中之一。如果您仍然不确定,请查看其他热门网站的操作方式。我认为您会发现大多数成功的、精心设计的网站都遵循上面列出的准则。

关于php - 性能基准 : PHP Generated content VS. javascript 和 AJAX 上的 DOM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/430733/

相关文章:

javascript - 成功时无法获取 json 对象

php - 使用 php POST 变量命名 mysql 表列

php - 在 rsync/mv 之前编辑文件

php - OAuth 返回错误的请求消息

php - 如何注册点击链接广告的用户

javascript - 按子像素滚动网页

javascript - Force.drag().on 返回未定义

javascript - 将数组存储在隐藏输入中,并使用ajax打印出来

javascript - AJAX 预测搜索

php - 相对路径在 Ajax 中不起作用