51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4344|回复: 7
打印 上一主题 下一主题

[原创] 前端web分析工具pagetest核心技术

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-6-2 00:29:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
pagetest分析web 页面解析时间。PageTest为AOL 开放源码的,
可从http://pagetest.wiki.sourceforge.net/ 下载。

作用同ibm pagedetailer ,yahoo yslow。

pagetest用visual .net工程。

核心技术
1 Winsock2 SPI
参考
http://www.microsoft.com/msj/059 ... LayeredService.aspx
http://www.vckbase.com/document/viewdoc/?id=643
或者windows 网络编程第14章winsock2服务提供者接口
如加载 SPI
wspStartup = new CAPIHook("mswsock.dll", "WSPStartup", (PROC)::WSPStartup_Hook, TRUE);               
                        nspStartup = new CAPIHook("mswsock.dll", "NSPStartup", (PROC)::NSPStartup_Hook, TRUE);       

主要函数如:
NSPLookupServiceBegin;NSPLookupServiceNext;NSPLookupServiceEnd
WSPSocket,WSPBind

2 WinInet


internetOpen

3  IE插件技术

class ATL_NO_VTABLE CIEHook :
        public IObjectWithSiteImpl<CIEHook>,
        public IOleCommandTarget,
        public IDispEventImpl<1, CIEHook, &DIID_DWebBrowserEvents2, &LIBID_SHDocVw, 1, 1>,
           public IIEHook

STDMETHOD_(void,OnBeforeNavigate2)( IDispatch *pDisp, VARIANT * url, VARIANT * Flags, VARIANT * TargetFrameName, VARIANT * PostData, VARIANT * Headers, VARIANT_BOOL * Cancel );
        STDMETHOD_(void,OnDocumentComplete)( IDispatch *pDisp, VARIANT * url );
        STDMETHOD_(void,OnDownloadBegin)( VOID );
        STDMETHOD_(void,OnDownloadComplete)( VOID );
        STDMETHOD_(void,OnNavigateComplete)( IDispatch *pDisp, VARIANT * url );
        STDMETHOD_(void,OnNavigateError)( IDispatch *pDisp, VARIANT *url, VARIANT *TargetFrameName, VARIANT *StatusCode, VARIANT_BOOL *Cancel);
        STDMETHOD_(void,OnNewWindow)( IDispatch ** pDisp, VARIANT_BOOL *cancel );
        STDMETHOD_(void,OnQuit)( VOID );

        // IOleObjectWithSite Methods
        STDMETHOD(SetSite)(IUnknown *pUnkSite);


然后在IE浏览器初始化时做
void CIEHook::InstallHooks(void)
{
        // load ourselves to make sure we stay loaded until the browser goes away
        // otherwise some of the API hooks will crash
        LoadLibrary(_T("agetest.dll"));

        // hook the browser wndProc (to supress crashes)
        #ifndef DEBUG
        if( !dispatch_hook )
                dispatch_hook = new CAPIHook("user32.dll", "DispatchMessageW", (PROC):ispatchMessageW_hook, TRUE);
        #endif
       
        // hook winsock
        WinsockInstallHooks();
       
        // hook wininet
        WinInetInstallHooks();
}

4 windows精确计时

                EnterCriticalSection(&cs);
                QueryPerformanceCounter((LARGE_INTEGER *)&lastActivity);
                LeaveCriticalSection(&cs);

5 各个环节的衔接
  这个才是重中之重。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情

    2016-12-30 10:59
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]测试排长

    2#
    发表于 2008-6-2 09:10:00 | 只看该作者
    看了,学习
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2008-6-2 09:55:32 | 只看该作者
    学习了,
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2008-6-2 09:57:17 | 只看该作者
    一看到指针都就晕了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2008-7-17 11:22:49 | 只看该作者
    请问,我安装 以后怎么启动部了IE 呢?
    点了IE 图标,弹出来的窗口一闪就没了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2008-7-22 14:12:02 | 只看该作者
    网址页面无法显示啊,楼猪
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
     楼主| 发表于 2008-7-28 19:28:27 | 只看该作者
    sourceforge.net这段时间国内访问很不正常
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2011-5-30 11:46:37 | 只看该作者
    我用过这个工具,只能在ie6下能正常使用,如果是ie7或8等,打开ie后就无法正常访问网站了
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-9-20 14:23 , Processed in 0.123302 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表