性能基准:PHP 生成的内容 VS。基于 AJAX 的 JavaScript 和 DOM

2023-11-29

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

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

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

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

我需要compare这两者至少通过以下方式:

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

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


您可能会发现以下问题很有帮助:聪明人VS。 JavaScript/AJAX

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

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

  • 您应该只使用 AJAX 调用来加载动态数据not页面加载时已知。例如,当您单击 Stack Overflow 上问题或答案下的“评论”链接时。页面加载时并不知道您想要查看特定问题的评论。

  • JavaScript 应该not需要访问您网站的核心功能.

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

  • 对服务器生成的页面的单个 HTTP 请求的加载速度明显快于加载进行五到六个额外 AJAX 调用的页面的请求,特别是在高延迟连接(如蜂窝网络)上。参见雅虎的加快网站速度的最佳实践.

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

没有什么比由于 Web 开发人员不遵守规范而无法访问页面更令人沮丧的了亲吻原则。举个例子,以友谊餐厅。我想看看他们的菜单当我在商场时,我在 iPhone 上加载了他们的网站,却发现如果没有 Flash,你实际上无法获得有关餐厅的任何有意义的信息。很高兴有精美的菜单和随处可见的甜点,但最后,我只是想看看他们菜单上的项目。我不能这样做,因为他们需要 Flash。在这种情况下,服务的优雅降级会有所帮助。

如果没有 Javascript,网络上的某些事情就无法有效完成。显示产品列表是not其中之一。如果您仍然不确定,请看看其他流行网站是如何做的。我想您会发现大多数成功的、精心设计的网站都遵循上面列出的准则。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

性能基准:PHP 生成的内容 VS。基于 AJAX 的 JavaScript 和 DOM 的相关文章

随机推荐

  • 如何定义位组合的类型?

    我正在努力使用 Powershell 创建一个具有像文件属性之类的位组合的自定义类型 该类型的用法稍后应该像这样 attr myType new attr read true attr write true attr execute tru
  • 如何在 Android 上通过 GPS 追踪距离?

    我将如何跟踪用户行驶的距离 我不一定关心存储航路点 尽管无论如何这可能是计算距离所必需的 到目前为止 我正在创建一个位置管理器并注册一个位置改变时侦听器 然后计算侦听器开火时两点之间的原始距离 这里的问题是 如果我让应用程序在桌子上静止不动
  • 用 UML 表示模板类的正确方法是什么?

    在 UML 图上 表示模板类的正确方法是什么 普通矩形右上角有一个虚线矩形 用来表示模板参数 像这样的东西 T ClassName
  • 通过通用引用传递静态 constexpr 变量?

    在下面的 static constexpr member L在类中初始化A然后通过值或 通用 引用传递 后者在 Clang 中失败 但在 GCC 中失败 并且成员 非成员函数的行为略有不同 更详细地说 include
  • MVC DropDownList 滞后

    我将下拉列表的 id 发布回索引 index2 视图 但已经落后了 第二次按 选择 后 它会显示正确的列表 http www jeroenchristens be CountriesWorld 第一页仅用于显示完整列表 从下拉列表中选择后
  • 将关键点转换为 mat 或将其保存到文本文件 opencv

    我在 opencv开源 中提取了SIFT特征 并将它们提取为关键点 现在 我想将它们转换为矩阵 带有它们的 x y 坐标 或将它们保存在文本文件中 在这里 您可以看到用于提取关键点的示例代码 现在我想知道如何将它们转换为 MAT 或将它们保
  • 如何使用 apache poi 在 docx 文件中设置纯头?

    我想使用 apache poi 为 docx 文档创建标头 但我遇到了困难 我没有可以显示的工作代码 我想请求一些代码作为起点 有一个Apache POI 单元测试这涵盖了您的具体情况 您正在寻找TestXWPFHeader testSet
  • 用.NET 5.0编写的控制台应用程序无法在同事的计算机上运行

    我在工作中用 NET 5 0 编写了一个工具 现在必须将其提供给非开发人员使用 不幸的是 无论我如何发布它 我都无法让它在她的计算机上运行 目前我将其设置为 配置 发布 任何CPU 目标框架 net5 0 部署方式 独立的 目标运行时间 w
  • viewDidLoad 在 didSelectRowAtIndexPath 之前被调用

    I have viewDidLoad 下一个 tableView 的 之前被调用didSelectRowAtIndexPath 当前的tableView 我正在使用 单例 来保存我的模型 到目前为止 它运行得很好 我试图传递当前表中选择的行
  • Android设备OTG路径

    我正在开发一个Android我必须在其中获取详细信息的应用程序USB device通过连接到平板电脑OTG 当我使用sys bus usb0 devices然后我得到平板电脑所有设备的列表 而我只想获取通过 OTG 端口连接的设备名称 有什
  • 打印多个 datagridview 页面

    我想打印我的DataGridView内容 但是当我有很多行时DataGridView我不知道我需要如何使用HasMorePages财产 这是我当前的代码 private void printDocument1 PrintPage objec
  • 我可以使 WAR 依赖于 JBoss 5.1 中的 JNDI 条目吗?

    作为从 JBoss 4 0 4 升级到 5 1 的一部分 我试图在成功部署 EAR 后部署 WAR JBoss 5 x 不支持前缀部署排序器就像 4 x 那样 这意味着我必须在 WAR 的 jboss web xml 中使用 看来我不能依赖
  • 我如何知道发布数据正确

    IBAction clicked id sender NSString CIDString cID text NSURL url NSURL URLWithString http localhost 8080 test NSString p
  • 转换为 swift 3 后,视图控制器中出现奇怪的通用函数

    在我的项目中 转换为 swift 3 后 我的前面出现了一个新函数ViewController class fileprivate func lt
  • 从 chrome 扩展从 https 发送请求到 http [重复]

    这个问题在这里已经有答案了 大家好 我在通过 google chrome 扩展从 https 站点发送请求到 http 站点时遇到一个奇怪的问题 jquery js 6 混合内容 页面位于 https www google co in we
  • AudioCache 堆大小溢出问题请求大小:1053184,最大大小:1048576

    我正在开发一个应用程序 我想同时播放两个 mp3 文件 其中一个作为背景音乐 并希望单独控制每个播放器的声音 每个文件大小为 5 mb 我已经完成了主音频文件 但是当我尝试用它播放第二个文件时 它会抛出错误 SoundManager mSo
  • 如何定位 css 中的下一个元素?

    我不确定这是否可行 但是是否可以识别 div 类下方的 div 如果是这样 我会用什么来做到这一点 div class img wrap div div lt This div class img wrap div div lt This
  • 如何识别 Facebook 用户代理

    在 FB 上分享我的页面之一时 我想显示一些不同的内容 问题是 我不想使用 og 元素 而是识别 FB 用户代理 它是什么 我找不到它 有关用户代理字符串的列表 请查找here 截至 2015 年 9 月 最常用的是facebookexte
  • Properties.Resources 未加载图像

    我有一个 Visual Studio 2012 C 游戏应用程序 我在项目的资源文件中拥有我正在使用的所有 png 图像 您知道为什么我可以使用 Properties Resources 访问除一个文件之外的所有文件吗 我检查了完整的文件路
  • 性能基准:PHP 生成的内容 VS。基于 AJAX 的 JavaScript 和 DOM

    对于以下非常简单的任务 从数据库查询产品列表并将其呈现在网页上 考虑两种设置 Setup1 PHP脚本查询 所有内容都构建在服务器上 并将整个页面返回给客户端 Setup2 使用 AJAX 请求内容的静态 HTML 页面骨架 接收到的内容在