閑來無事跟朋友折騰了一個山寨百衲本的網站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會執行不到