闲来无事跟朋友折腾了一个山寨百衲本的网站HelloCpp(
http://www.hellocpp.net)。界面我们都是外行,反正基本就是活脱脱一个山寨的
www.codeproject.com。不过开发过程中还是蛮有一些心得的。现在写出来跟大家分享。有不对的地方请大家多多建议。
网站性能优化之文件服务器分离技术
在WEB开发中,一个重要的性能问题是IO问题。通常,一个网站里会拥有包括图片、RAR文件等一系列的文件,这些文件一般都比页面要多很多而且大很多,
并且,这些文件也会比页面访问更多次。这意味着,如果能优化这部分IO的性能,则对整个网站的性能都会有所提高。
在HelloCpp(http://www.hellocpp.net)的开发过程中,我们使用了网站服务器与文件服务器相分离的技术。即除了页面以外的图片、脚本、资源等文件,都是部署在与网站页面所在的服务器不同的服务器上的。而通过网站上传文件的时候,也会由后台程序保存在远程文件服务器上。这里,保存通常有两种做法:
1.使用FTP服务来远程保存文件
2.使用WebService来远程保存文件
HelloCpp
中使用的是第二种方式,因为使用第一种方式的话,文件服务器需要额外开放一个FTP服务,这样就有更多被攻击的危险。编写一个远程保存文件的
WebService相当简单,只要传递文件的数据Stream即可。另外,文件服务器还可以采取一些轻量级的配置方法,尽可能地提高IO性能。也可以配
置一个冗余的文件服务器,来提供集群访问,具体细节请参考其他专业的文档。
-----待续
最后,欢迎支持HelloCpp(http://www.hellocpp.net),中国人自己的CodeProject编程资料库
闲的无聊,翻了翻CSDN的博客,专家列表里好多专家啊。挑了几个看了看,发现大家都好高深莫测,哎,看来需要再多学点东西了……技术跟不上了……
1.支持正常的显示
2.支持脚本操作(Method和Property)
3.支持事件:<script for=id event=event>的形式了。但是addEventListener的形式还没试验过
稍后放文章出来……
最近在使用DirectShow开发D3D和视频相结合的内容,感觉有些怪异,很多视频在暴风里播放正常而在DirectShow Filter Chain里总是Connect Pin失败,最后感觉到应该是我的Filter有问题.遂Google之.发现一篇
利用DirectShow开发自己的Filter ,参考之,权做备忘
很奇怪,一个XML文档,使用gb2312编码死活解析不过去,使用utf-8就可以了。嗯,后来查了jquery的文档,确实要求UTF-8,以留本文权做备案
废话不多说了,直接引用MS的原话:
[quote]
从 MSXML 3.0 版开始,
XMLHTTP 请求对象使用 Urlmon.dll。如果在调用
open 方法时将
async 参数设置为 VARIANT_TRUE,则 URLMON 使用消息队列机制来通知应用程序数据何时可用,并更改
XMLHTTP 请求对象的
readyState 属性。
在 Visual C++ 应用程序中,必须使用消息泵来接收和调度消息。如果应用程序不能正确地处理传入的消息,则由于
XMLHTTP 请求对象的
readystate 属性未被更改,因此应用程序会停止响应(挂起)。
[/quote]
参考URL
http://support.microsoft.com/kb/303326/zh-cn?spid=1198&sid=global
别的废话不多说了,基本流程和TCP下一样,只不过说一点需要注意的。
在WSARecvFrom成功以后,IOCP得到了投递,处理完了这个数据,这个时候应该重新发起一个WSARecvFrom投递了,这个时候要特别注意,
不要重新分配一个Overlapped,而要复用当前这个,不然在GetQueued的时候,会报错,报0xC000000005,读取0x00000010错误。
网上的IOCP都是TCP的,UDP的资料太少,这里提出一个要注意的地方,以使后来人避免走弯路
一定要用IIS来调试ASP.NET WebApplication,不能用Development WebServer啊。。不然global.asax会执行不到