【发布时间】:2011-03-26 21:46:36
【问题描述】:
我目前在做一个比较小的项目给我公司玩玩,它基本上是node.js中的一个代理,现在的功能比较简单
- 缓存
- Http(s)
- 黑名单
- 可配置
- 等
我正处于构建黑名单系统的阶段,我的黑名单文件是一个普通文件,每个黑名单站点都在一行中。
现在将构建黑名单,以便您可以将以下类型的值列入黑名单:
- google.com
- google.com/path
- ww2.google.com/path
- 202.55.66.201
- 202.55.66.[100-200]
现在在 node.js 中,当请求进来时,我可以使用来自客户端的请求 URL,然后将在 IP 缓存文件中查找它,如果它不存在,它会被 ping 通,我得到该请求的 IP。
所以手头有一些信息,1 是域,2 是 IP,3 是端口。
现在的问题是找到最快的方法来对照基于文件的黑名单检查这些值。
由于这些值不是直接查找,我不确定是否将 then 放入对象并执行:
if(ip in blacklist || domain in blacklist || fullUri in blacklist)
{
//block
}
即使我这样做了,它也没有什么好处,因为我无法检查 IP 范围等,它缺乏对要求更高的站点黑名单技术的支持。
我在考虑某种数据库系统,但这是我想避免的,所以基本上我要问的是有什么方法可以在数据文件上执行通配符查找而不会造成太多开销。
【问题讨论】:
标签: file-io node.js performance wildcard