Erlang-China

erlang 中文社区

为什么没用YAWS?


之前的 webmine (抱歉,现在暂时没法访问)是基于 erlang 自带的 inets httpd 而不是如雷贯耳的 YAWS 。有朋友问我,这是为什么,说来说去好像说不清,索性就 blah 一篇了。

为什么不用 yaws 呢?主要有这么几个原因:

1. yaws 在我的 vps 上跑不起来。这个原因够乌龙的吧。不过这就是事实。主要的原因是 yaws 需要有 ~/.yaws 这个目录,而,我的帐户权限太低,以至于并不是 ~ 的 owner ,也就无法创建一个这样的目录。于是乎,就只有“残念”~~。

2. yaws 的好多功能我都不需要。yaws 之于 inets httpd 就好比 jsp 之于 servlet 。yaws focus 在页面的生成上,比方 .yaws 文件可以把 erlang 代码嵌入 html 之中,比方它还支持 ssi 等等。都是很好的功能啊。不过。我的 webmine 纯粹是一个 ajax + json 的应用。我又不需要生成页面,所有的界面都是在 ajax 中组装的,那么,这些特性,只好谢绝了。

3. inets httpd 真的很适合 ajax 的应用啊。比如,esi 这个模块,简直就是惊艳。想当初,费了九牛二虎之力解决类似 classpath 的问题,来实现一个自己的“ url 目录映射到 erlang 函数调用”的机制。蓦然发现 esi 早就在那里了,真是瀑布汗。这玩意人家早就设计得好好的了,干吗费劲自己做呢?

4. inets httpd 很适合 embed 到俺的应用之中。个人感觉,其实 yaws 的架构并不是很符合 Design Principles 很多地方可以更标准化的来实现嘛。不过,性能确实比 httpd 好(增加了缓存处理)。不过这对我的应用无所谓(设置 expire 头,在客户端缓存也行啊)。在 .app 里加上一两行就解决了,启动应用,自动启动 httpd ,省心啊。

咳咳,我当然不是说 yaws 不好,我只是。。。呃。暂时觉得 inets httpd 就能满足我的要求,而且他还能在我的环境下跑得起来。那,就是它了。





Comments



1
Author:  jackyz | Date:  June 23, 2007 | Time:  9:13 am

又重新import了一次mysql,测试下comments

2
Author:  piggybox | Date:  July 11, 2007 | Time:  8:19 pm

看见这个:http://wiki.trapexit.erlang-consulting.com/index.php?title=A_fast_web_server_demonstrating_some_undocumented_Erlang_features&printable=yes
说yaws设计得还不够快-_-b



Write a Comment

Note: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>