前情提要: https://www.v2ex.com/t/355150#reply6
仔细考虑后,最后决定用 Node.JS+koa+Sequelize.JS+Postgresql 这一套搞后端,纯 API,渲染统一放在前端,后端渲染还要浪费 VPS 的 CPU 时间,不能忍。
多说的 api 的 request 和 response 都是 json 结构的,我查了一下,Javascript 的 JSON.Encode 会比 Python 的快不少: http://szborows.blogspot.com/2016/03/mini-restjson-benchmark-python-351-vs.html, 所以选的 NodeJS
仔细分析博客评论系统的时间消耗
————考虑到大部分用户都是只读评论,并不写评论,即使是最优秀的博客,留言率也不超过 1%,也就是说,这是一个读远远多于写的服务。 除了不能消除的数据库查询时间(这一部分可以通过把这一整套东西放在 SSD-VPS 上尽量加快),剩下的从多到少应该是用“ ORM 映射到对象”,第二应该是“对象转换为 json ”。也就是说,JSON-对象-数据库中的数据的互转应该是最耗费时间的部分了。
+--------+
| | +-----------+ +------------+
| Nodejs | | | | |
| Koa +----+ sequelize +---+ Postgresql |
| | | | | |
+---+----+ +-----------+ +------------+
|
|
+---+----+
| |
| Redis |
| |
+--------+
那么如果要考虑性能的话,那么加上一个 Redis 做服务器的缓冲————事实上只要缓冲最频繁读取的那一部分,就可以大大减少“ ORM 映射到对象”和“对象转换为 json ”这个两个操作了,也就是说,问题完美解决。
问题是,我这样的设计是否有问题呢? Redis 是否有必要?
接着就是 Postgresql 里面设计的时候是否有必要预先计算好各种请求的结果做存储呢?比方说
因为之前没想过类似的问题,所以也不知道这么想对不对。请各位大佬帮忙指点
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.