1
c 2012-07-04 15:38:10 +08:00
|
2
luztak OP 啊?
我的意思是Web部分和数据部分分开.要127.0.0.1的那种.想用json的0 0 |
3
INT21H 2012-07-04 15:47:29 +08:00
激进点,用erlang写个api读取数据,前端全部ajax处理,tornado直接做web server这样如何?
|
5
INT21H 2012-07-04 15:54:12 +08:00
@luztak 我也在用tornado,其实erlang的特性就是并发,tornado也提供了比较好的异步IO,可以做backend提供api用。
可以看一下这个erlang程序 http://www.chicagoboss.org/ |
6
luztak OP @INT2H 恩.刚才找到了 http://github.com/mongodb/mongodb-erlang .
|
7
reorx 2012-07-04 16:00:56 +08:00
如果tornado作为client,连接API进行数据处理,数据io可能成为最大的瓶颈,因为你的每一次读写都造成了4次数据的往返。实际上tornado反而更适合做你说的backend/api,而不是提供页面的服务。
|
8
adow 2012-07-04 16:06:11 +08:00
我现在就是tornado 中一堆handler只输出json,然后web静态页面上全部ajax调用
|
9
luztak OP |
10
luztak OP @xeorx 咦……
每次读,tornado->api请求,api->tornado结果 每次写,tornado->api请求+数据,api->tornado结果 你的意思是一次操作包含读和写么?但这里tornado每次要么get要么post,post部分是交给ajax做的 这样也要全部算上? |
11
adow 2012-07-04 16:16:05 +08:00
@luztak 还好啦,比如我弄了好多个静态页面,当然全部放在staitc目录中,原来可以通过/static/index.html 来直接访问,不过url看上去不是很带感.
然后写了一个叫PageHandler的,把/:xxx 的全部用xxx.html 渲染,这样简单些. 不过如果url要求复杂的话只能一个个对应各自的handler了吧,我想反正也就写一个self.render还不算很复杂。 我现在做的这个用PageHander就足够了 |
12
reorx 2012-07-04 16:20:23 +08:00
|
13
luztak OP @adow 牛人@ @
我朋友写的个论坛的templates里就是一堆又一堆{% %}/{{ }},.py就是一堆self.db 不过总感觉Ajax效率比较低……因为Ajax get/post回来的结果还要getElementById.innerHTML写进去(jQ我会,只不过觉得开销更大0 0),而页面元素一多这事效率就低了 |
16
adow 2012-07-04 16:24:35 +08:00
@luztak 我以前经常弄模版什么的,美工或者前端又不肯写那个模版语言,所以很多时候都是自己做了很多前端工作,而且我一些html/js/css就效率底下,然后我就和前端商量这样,他到还蛮乐意,因为他自己可以实现想要的各种折腾。只是这样的做法我觉得不适合大访问量的网站吧,因为很多请求来着,真的每次读写都是get/post,一个页面有时很多个请求
|
18
reorx 2012-07-04 16:41:54 +08:00
@luztak 啊,你名字打错了没有at到我,就没有看到#10的问题。
你理解的没错,其实是2次往返,4次传输 (request - response * 2),不过多一层通信总是多一些麻烦,所以不到万不得已我不会选择那样做。如果真的要做服务间的通信,用protocol buffers或者thrift这些成熟的方案吧。 |
20
binux 2012-07-04 17:10:47 +08:00
用PHP这么干过,没用模板,还是XML。。
用aria2输出的JSON-RPC的api做过。。 不过,如无必要,还是算了。。 |
21
kernel1983 2012-08-26 22:26:36 +08:00
API化啊, 我已经有好几个网站这么做了, 网站做好了基本mobile API也做好了
秘诀是你需要一个js template引擎, 因为这个underscore.js变得和jquery一样成为了标配 |
22
fanzeyi 2012-08-26 22:46:56 +08:00
https://github.com/fanzeyi/Vulpix/blob/master/judge/db/__init__.py#L24
=.= 对于一大堆 self.db 我是这么解决的 =v= 弄个 Mixin 模块 |
23
DeepBlue 2012-08-26 23:14:18 +08:00
要不要试一下nginx conf编辑?好像叫做OpenResty的貌似
|
24
imcj 2012-08-26 23:21:24 +08:00
Java里面是这样做的,一般放在DAO里面。他们把这个叫做MVC
|
25
zieglar 2012-08-26 23:22:50 +08:00
@kernel1983 求详解
|
26
kernel1983 2012-09-27 10:47:06 +08:00
|