我们有一个新闻网站,我们会在其中缓存完整的文章页面。
该页面上有4个区域需要继续保持动态:
现在我们想到这一点的唯一方法是通过AJAX调用:
$('#usercheck').load(<?php echo "'" . base_url() . "ajax/check_header'"; ?>);
等等。
这对CPU产生了巨大的负担,但接近这个的正确/替代方式是什么?
请参阅附件:
答案 0 :(得分:0)
首先,您不必为每个可能的动态内容使用AJAX,尤其是在评论的情况下,您也可以通过iframe
加载它们。
这样,您不依赖于Javascript来发出请求。
它甚至可能适用于柜台。
但是,根据我在图表中看到的内容,您的问题不是Javascript,也不是数据库服务器。在我看来,你有一些沉重的PHP控制器,也许你正在加载一个繁重的框架,只是为了$session->id
检查。
此外,您是什么意思&#34;我们跟踪每一个动作&#34;?你如何追踪它们?你是从每一个小东西发送一个AJAX请求,还是你用JS去掉它们,并且每隔30秒就发送一次?
我的建议是你考虑你正在调用的PHP代码的大小,并尽可能地减少它,如果看起来可行则为零(通过利用localStorage
来跟踪你的用户第一次登录后的会话),也许可以用其他方式加载计数器和评论。
例如,我推断您只是在每页加载时检查一次计数器,忽略当前用户正在阅读文章时其他用户的后续加载,因此您的计数器可能恰好在某个时候过时了,取决于您的流量。
我会更好地解释一下:你的页面有 n 个视图,所以当我加载它时,你要求 n 然后显示 n + 1 < / em>给我。在我阅读的同时,其他用户会同时请求和查看 x 次。您在服务器上的计数器肯定已更新为 n + x ,但我页面上的计数器仍然显示&#34; n views&#34; 。 那么,挑剔并向我展示 n + 1 并且没有更新它的重点是什么,因此被 x 关闭了?
所以,首先,计数器控制器应该尽可能小,如果你在iframe中加载它,如果没有AJAX自动更新怎么办?
How to refresh an iframe not using javascript?
这样可以使计数器保持最新状态,您可以在每个页面视图中使用PHP渲染一次,然后静态地提供生成的HTML文件。