1

我有一个我已经开发了一段时间的 IIS6 的 ISAPI 过滤器,但我只是注意到一些令人不安的事情。每当我安装过滤器并下载文件时,文件下载变得非常慢。在没有安装过滤器的情况下,我在远程机器上每秒获得约 120kb 的速度,在安装过滤器的情况下每秒获得约 45kb 的速度。

这似乎与SF_NOTIFY_SEND_RAW_DATA回调有关。每当我注册此回调时,下载速度都很慢,当我不注册时,一切都很好。

即使我让我的HttpFilterProc函数立即返回,就像这样:

DWORD WINAPI HttpFilterProc( PHTTP_FILTER_CONTEXT pfc, 
   DWORD notificationType,
   LPVOID pvNotification )
{   
    return SF_STATUS_REQ_NEXT_NOTIFICATION;
}

我也尝试过返回SF_STATUS_REQ_HANDLED_NOTIFICATION相同的结果。

是否有可能我的 DLL 上有一些构建设置导致回调函数执行缓慢,或者这只是 ISAPI 的方式?

4

1 回答 1

0

它与 IIS 的内部结构以及它如何实现数据发送有关。这篇微软博客文章在这里:http: //blogs.msdn.com/david.wang/archive/2005/12/14/How-IIS6-Compression-Schemes-interact-with-ISAPI-Filters.aspx移动的一些提示从内核到用户空间的数据和无法使用 VectorSend。我不完全明白这家伙在说什么,但要点似乎是“如果你能提供帮助,请避免使用 SF_NOTIFY_SEND_RAW_DATA”。

于 2010-01-26T22:08:22.337 回答