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 の内部構造とデータ送信の実装方法に関係があります。この Microsoft ブログの投稿: 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 に答える