0

Shopping.com REST サービスと統合しようとしています。そこで、クラス
を使用して XML データを取得する単純な (最小限のコード) C# アプリケーションを作成しました。ベンチマークにHttpWebRequest使用しましたが、応答時間 (を含む) は 1300 ~ 1700 ミリ秒程度です。 StopWatchStream.ReadToEnd()

良さそうに聞こえるかもしれませんが、Fiddler を使用して Chrome ブラウザーで応答時間をテストしたところ、応答時間は約 600 ~ 800 でした。

私はいくつかの記事を読みました。HttpWebRequest.Proxy を null / に設定することを提案した人もいますWebRequest.DefaultWebProxyが、大幅な改善にはなりませんでした。

リクエスト URL:
http://sandbox.api.shopping.com/publisher/3.0/rest/GeneralSearch?apiKey=78b0db8a-0ee1-4939-a2f9-d3cd95ec0fcc&trackingId=7000610&keyword=nikon

では、この応答時間を達成するにはどうすればよいでしょうか?

4

1 に答える 1

0

gzip と deflate を有効にしていますか?

また、コードで Web 要求を初めて実行するときは、必要なアセンブリをロードし、サービス ポイントを初期化し、HTTP 接続を確立するためのウォームアップがあるため、2 回目以降の実行の時間を確認してください。

編集: 申し訳ありませんが、GZipStream または DeflateStream を使用して結果をデコードする必要がありますが、少なくともこれでアイデアが得られます。詳細については、こちらを参照してください: HttpWebRequest & ネイティブ GZip 圧縮

var timer = Stopwatch.StartNew();

var url = "http://sandbox.api.shopping.com/publisher/3.0/rest/GeneralSearch?apiKey=78b0db8a-0ee1-4939-a2f9-d3cd95ec0fcc&trackingId=7000610&keyword=nikon";
var webRequest = WebRequest.Create(url);
webRequest.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
using (var webResponse = webRequest.GetResponse())
using (var responseStream = webResponse.GetResponseStream())
using (var streamReader = new StreamReader(responseStream))
{
    var content = streamReader.ReadToEnd();
}

var timeSpan = timer.Elapsed;
Console.WriteLine(timeSpan);
于 2013-02-28T21:46:20.123 に答える