我有一个Django服务器。服务器加载几乎所有静态内容的网页,但必须从数据库加载一些数字。
我在考虑性能/价格;我可以在快速服务器上托管我的Django服务器,并使用Django模板渲染页面。或者我可以在较慢的机器上托管服务器,并创建一个静态页面,使用ajax加载少数数字,并在其他地方廉价地托管页面,如 github.io 。
后一种选择将使大部分页面加载真正快速且真正便宜。
我想知道有什么权衡取舍?
答案 0 :(得分:1)
无论您决定聘用哪种服务器,都应该始终考虑减少服务器负载 - 无论服务器的速度有多快。通过减少服务器负载我的意思是只让您的服务器执行目前真正需要的。
您登录自己的帐户后,您会看到您有5条通知和3条新消息以及几张照片和朋友非常有趣的状态。凉!现在,您点击通知图标,查看那个辣妹(请原谅我,如果您是女孩:D)已将您添加到她的朋友列表中。当你点击一个大的白色<div>
弹出时你只看到一个加载的GIF!通知确实出现,但几秒钟后。尝试使用缓慢的互联网连接,并且您可以在更长的时间内欣赏加载GIF的美感。
Facebook仅使其服务器计数通知和新消息的数量,并向您显示这些数字。从而减少服务器负载。它只会在您想要查看时向您显示通知。加载通知,只需要一个最小的AJAX调用,其中只传输了大约10 KB的数据!
Facebook随时随地都会这样做。考虑一下:Robert Downey Jr.在他的Facebook页面上张贴了自己的照片。不久之后,你会发现它已经获得了10k +评论。您决定阅读它们并单击注释按钮。一个有吸引力的加载gif再次弹出一段时间,很快被评论取代。但是,嘿,只载了10条评论。什么......哦等等! Facebook减少服务器负载的方式 - 首先阅读这10条评论,如果您想要阅读更多,请再次发送请求。Twitter也是这样做的 - 无限滚动。
这种方法有两个方面让你受益:
如果您有一些很酷的技术,比如AJAX,为什么不使用它呢?为了上帝的缘故,你的服务器不是驴子!
P.S。通过Facebook和Twitter,我的意思是他们背后的工程师。
答案 1 :(得分:0)
那将取决于以下内容:
如果您想在页面加载时显示数字本身,而不是在模板响应本身时获取它们。
为什么您希望您的网站访问者等到这些数字填充(如果打算显示它们)?
如果仅在用户点击时显示,则首选Ajax
如果您正在制作的查询需要花费大量时间,而不是应该首先努力优化该查询尽可能快,
如果查询可以在最短时间内提供结果,那么徒劳可以通过Ajax对服务器执行另一个请求。
但是如果你知道Query会花费很多时间而不是Ajax就好了。