‘Develop’ 分类

开发可缓存加速的动态页面

星期六, 十一月 22nd, 2008

缓存加速的动态页面--指页面内容可以被静态化,可供多个访客读取的。而传统的动巷,用铅笔在城市地图上标出,它们就构成一个字母,准确地说,应该是个倒置的W,首尾两点之间距离没那么均匀分配,中易的痰盂,我经过的时候常看见老人将秽物倒进河水,还在河边冲洗,用刷子擦,坚硬的塑料须擦着金属面,磨出笨拙的窸窣网页并不能直接实现静态化缓存处理,因为当中可能包括了一个用户信息,或与个别用户关联的信息。这些是无法进行公开缓存加速的,本文主要是提供一个开发可公开缓存页面的解决方案   :)

为什么需要缓存加速?

  目前有很多网站是基于PHP、Java或ASP甚至C等语言开发而成, 但无论使用哪种语言进行开发,都必须跟数据库连接、读取和处理数据然后生成页面内容并输出。而数据库正好就是动态页面的速度瓶颈,对于一个百万级访问量的网站,如果没有缓存加速的设计,无法想象网站数据库的压力是如何之大。每秒上千个数据库连接和处理,该需要什么样的数据库系统才能支撑起来?

  只有使用缓存加速的技术,才能有效降低数据库的压力并提高页面处理的效率,从而加快页面打开速度。 (全文...)

使用虚拟URI+域名秘匙技术进行防盗链

星期三, 九月 3rd, 2008

互联网上被广泛采用的防盗链技术有三类:

  1.  判断访问请求的 Referer 是否合法
    技术防盗链效果比较差,下载软件很容易通过伪造 Referer 突破防线。并且不适合授权多个请求来源,比如 Yo2 上的绑定域名用户 a.com ,页面上包含了 image-001.yo2cdn.com/a.jpg ,而验证 Referer 的关键就是要知道 a.com 是可正常获取内容的域名,但 Yo2 上绑定的域名非常多哦,不可能把它们都写到 Referer 的配置列表上吧 :)
  2. 使用 Cookiesession 验证
    该技术的防盗链效果非常好,目前 Blogbus 就是采用该技术。但难以给外界网站设置访问授权,比如需要允许来自 FeedSky 页面可以显示图片,我们就需要 FeedSky 的页面可以在客户浏览器给 blogbus.com 域名下添加验证 cookie ,并且 feedsky.com 是无法跨域名写入 blogbus.com 的 cookie 哦,这个很重要。目前 Blogbus 是给 feedsky 提供 feedsky.blogbus.com 来实现验证 cookie 的。但如果要给多个网站提供访问授权,会很累哈 :)
  3. 使用访问记录数据库验证
    该技术实现防盗链效果最好,也是无法破解的。用户访问一个网页页面,就会记录在一个数据库中,当访问页面上的附件时(如图片),服务器会判断 Referer 地址是否在访问记录的数据库里,如果没有对应的访问记录,就会返回错误的页面了。当然还可以添加 cookie 进一步阻挡非法的请求。但该技术只适合一个网站使用,很难给外界网站进行访问授权。并且还要维护一个庞大的访问记录表,不适合大型网站使用。

综上所述,未找到适合 Yo2 使用的技术,所以我在第一种技术方式的基础上进行加强,实现虚拟URI+域名秘匙的防盗链技术。详细描述如下:

  目前我们的页面 http://oneoo.com/ 上包含一个图片 http://image-001.yo2cdn.com/picture.png。我们在页面的输出过程中加入过滤器,过滤器根据页面所在域名 oneoo.com 生成域名秘匙: ocm (生成秘匙的规则请自行定义),并把 http://image-001.yo2cdn.com/picture.png 替换为 http://image-001.yo2cdn.com/ocm/picture.png,这样服务器上收到图片访问的请求时,就会根据 Referer 的域名生成一个 Key,并把这个 Key 与访问 URI 上的域名秘匙进行对比,就可以起到防盗链的作用。当然我们还可以给 feedsky.com 等网站进行授权,下载软件使用图片所在域名作为 Referer 也是无法突破的,并且域名秘匙是经过加密的,也不能轻易伪造出来。

  我们的服务器端 yo2cache 在做防盗链判断后,会对合法的访问请求进行 uri 改写 ,http://image-001.yo2cdn.com/ocm/picture.png 自动改回真实地址 http://image-001.yo2cdn.com/picture.png,返回正确的内容。

  该防盗链技术适合有能力改造或自行编写 web server 的网站使用,效果不错 :)

Yo2mass 插件已进入内部测试

星期六, 八月 30th, 2008

m
ass 插件将给大家提供一个聚合自己所关注或者好友文章的页面,你只需要到后台开启插件,并在设置页面中添加 feed 地址,就能在博客上添加一个聚合页面了,还支持侧栏输出哦。很简单、很方便 :)

  为防止有人恶意的用于 SEO 操作,所以我们对 feed 地址的数量作出了限制:免费用户3个,绑定域名用户10个。我们也会监测用户的使用情况,发现恶意使用者,将会被关闭博客服务处理。我们提供用户需要的工具,如菜刀,但我们必须阻止使用菜刀杀人的情况发生。

  我们充分考虑到文章的版权问题,所以插件不会提供文章全文转载,只能显示几百字以内的摘要。对于文章上的图片,则以小的缩略图显示。或者有人会说文章罢了,不值几个钱。但我却认为低价值不能代表可以随意转载。人家本来就只值那么一点点,你还要落井下石啊?

  mass 插件本身意义不是丰富自己博客的内容,而是给大家提供一个互相展示的场所,给访客多一些内容导航。这就相当于更高层次的友情链接。好比我自个的博客,内容以博客界、互联网技术为主,所以我的聚合 feed 都与这些有关,访客如果有更多的内容需求,可以通过 mass 插件导航到其他博客上 :)

  结语:我认为 mass 插件是有益于博客发展的,希望大家能更好的使用它。

HTTP 的后台任务

星期四, 六月 12th, 2008

所周知 HTTP 协议是无保持连接的,HTTP 1.1 虽然实现了保持连接的能力,但依然无法在连接上实现交互功能。浏览器服务器发送一个 GET 请求,然后等待服务器返回数据,完成一个数据交互处理。问题就是出在等待返回这点,当有一个不需要服务器返回数据,但需要服务器处理一定的操作时,就显得这个等待是没有必要的。

举个比较长见的例子:

一个使用 Javascript (或图片) 方式记录的统计程序,需要用户每次打开页面都在服务器端做记录操作,而我们不需要收取服务器端返回的任何结果,只要服务器能做计数的操作就可以了。

虽然是 Javascript 或图片的调用,但在页面在浏览器渲染并显示给用户的过程,依然会造成一定的延时。如果我们能把这个没用的等待剔除,就可以加快页面的加载速度。

  但这个应用非常特殊,正常来说根本没有这样的 web server 支持 _-!!,我在 google 查阅过一些资料,可以使用给浏览器发送 Header : Content-Length: 0 的方法来实现 ,经过测试在未经过 nginx 的情况下确实能够令到浏览器停止加载,但如果前端有 nginx 就没有任何效果了。

  如需要 100% 的效果,只能从 web server下手,在收到 GET 请求时就直接返回一个内容,但继续进入 PHP 处理接下来的数据操作。

  Yo2 的页面访问都是经由 yo2cache 处理的,so 我们很容易就实现了这项功能 :)

Yes! 是 Yo2messenger

星期一, 四月 21st, 2008

早以前,一个老伯伯就发过一个 Yo2messenger 的截图,但此老伯伯当时只做了个非常简陋的登录界面,就没有回事。并未继续开发下去。

  现在这个老伯伯终于下定决心要把它给“生”下来的 :) 并且制作了更好的界面,剩下的工作就是加入实际功能。

  程序是基于网页 AJAX 的形式进行开发,当然对于 Windows 平台就提供一个简单的框架,更方便使用。而 Linux 等其他使用 FireFox 浏览器的用户则可以在浏览器的侧栏加载此程序 :) 界面已定型,现在给大家放个图

sc.gif

分页: 2/5 上一页 1 23 4 5 下一页