Оптимизация HTTP-запросов/запросов на регулирование браузера?

В настоящее время у меня есть приложение, которое торгует виртуальными предметами и делает не менее 40 запросов CFHTTP в секунду на сервер хоста.

Проблема, с которой я сталкиваюсь, заключается в том, что мой вызов CFHTTP занимает от 400 мс+, чтобы вернуть ответ, что означает, что мое приложение пропускает 99% сделок, которые оно находит, поскольку существует множество других конкурирующих приложений, которые получают более быстрый ответ.

Я изо всех сил пытался найти причину и / или решение этой ситуации, поэтому я написал сценарий как на CF, так и на C #, который делает 10 HTTP-запросов, каждый из которых синхронизируется, что привело к следующему времени ответа:

В CF с помощью следующих браузеров:

  • IE9: 384, 444, 302, 570, 535, 317, 510, 349, 357, 467 — в среднем 423,5 мс
  • Firefox 27.0.1: 354, 587, 291, 480, 437, 304, 537, 322, 286, 652 — в среднем 425 мс
  • Chrome: 300, 328, 328, 639, 285, 259, 348, 291, 299, 414 — в среднем 349,7 мс.

В консольном приложении С#:

597, 43, 96, 52, 44, 305, 67, 91, 54, 270 — в среднем 161,9 мс

Как вы можете видеть, существует большая разница в производительности при выполнении HTTPWebRequest в консольном приложении C#, что заставляет меня думать, что, возможно, запросы CFHTTP регулируются? Или это может быть связано с браузерами?

Любая помощь будет принята с благодарностью!


person CPB07    schedule 27.02.2014    source источник
comment
Не говоря уже о том, чтобы запустить его через браузер; настройте страницу CF, которая выполняет некоторые запросы cfhttp, и запустите ее как запланированную задачу, ничего не выводя, с ведением журнала для записи времени. Надеюсь, не должно сильно отличаться от консоли С#.   -  person duncan    schedule 27.02.2014
comment
Только что создал запланированную задачу, которая вызывает тест, и время было 289 311 408 513 5195 313 ​​352 321 301 358, так что почти так же, как и раньше...   -  person CPB07    schedule 27.02.2014


Ответы (1)


У меня недостаточно комментариев, поэтому я спрошу здесь. Вы пробовали использовать классы Java для выполнения http-вызовов?

    obj = CreateObject("java", "org.apache.commons.httpclient.HttpClient");
    get = CreateObject("java", "org.apache.commons.httpclient.methods.GetMethod");
    header = CreateObject("java", "org.apache.commons.httpclient.Header");

    obj.init();
    tmp = get.init("http://google.com");
    res = obj.executeMethod(tmp);
    return res.response;
person Tim Garver    schedule 21.04.2014
comment
Нет, не пробовал (поскольку я не знал, как использовать классы Java с CF), но попробую и посмотрю, как у меня дела... - person CPB07; 28.04.2014