【发布时间】:2017-01-05 16:21:11
【问题描述】:
我们有一个新闻网站,我们在其中缓存了完整的文章页面。
该页面上有 4 个区域需要继续保持动态:
- 查看计数器:当页面加载时,我们为该文章的 view_counts 添加 +1。
- 标题:在网站的标题中,我们检查 session->id 是否存在,如果存在,我们会显示欢迎 [名称]、我的个人资料/注销,如果不存在,我们会显示注册/登录。
- 评论:我们展示了为那篇文章制作的 cmets。
- 跟踪用户行为:我们跟踪用户在网站上的每一个操作
现在我们能想到的唯一方法是通过 AJAX 调用:
$('#usercheck').load(<?php echo "'" . base_url() . "ajax/check_header'"; ?>);
等等。
这会在 CPU 上造成巨大的负载,但解决此问题的正确/替代方法是什么?
请看附件:
【问题讨论】:
-
您可以在开始时为自己构建一个组合的 AJAX 请求。因此,您可以执行一个请求并将所有内容手动放置到正确的元素中,而不是执行四个请求。
-
谢谢,这听起来是解决许多问题的好方法。但是这样就够了吗?
-
什么意思?它将请求减少四倍并且速度更快。但它不会完全降低你的 CPU 负载。负载将来自从其他事物加载数据,例如从数据库加载数据。如果您的负载很高,那么您需要对其进行优化或考虑使用更快的服务器。 ;) 但是您必须以任何方式加载数据,如果您的页面被缓存,ajax 似乎是最好的解决方案......其他解决方案将是服务器端的整页缓存系统,它会为您解析您的文档。但这要复杂得多,需要在服务器上安装额外的软件......
-
正如@eisbehr 已经指出的那样,问题不在于AJAX 请求,而在于服务器脚本。 AJAX 请求只是对服务器的普通页面请求,它甚至比网页请求更轻,因为(大多数情况下)在它之后没有请求任何资源(图像、样式表等)。所以测试和提高服务器脚本的性能。并且仅在需要时执行 AJAX 请求,例如每分钟左右。注意:当 4 个调用不使用相同的数据时,将它们组合起来是微优化。
-
@eisbehr 在这种情况下将 AJAX 请求合并为一个不是解决方案,因为它是 msoft 提到的微优化,因为检查这些请求的频率会有所不同,例如 cmets 和访问需要更多迭代而不是标头并多次执行所有操作会降低服务器性能。我认为在这种情况下,我们应该依赖 node.js 或类似的服务器端脚本来进行此类小更新,而使用 ajax 进行一次更新或者可能是不那么频繁的请求。
标签: javascript php jquery ajax cpu