POST-ответ занимает слишком много времени - PullRequest
4 голосов
/ 25 июня 2009

Клиентский код Ajax Javascript использует XMLHttpRequest для отправки запроса POST, но я получаю примерно 0,5-секундную задержку при получении ответа, и я пытаюсь выяснить, почему, так как мне бы хотелось быть быстрее, больше как 0,2 секунды. Обе конечные точки находятся в одной интрасети, клиент напрямую подключен через Ethernet, а сервер - через 802.11b.

Используя Wireshark, я прослушал следующие транзакции TCP:

Time(ms)     From          To             Info
------------------------------------------------------------------------
0.0          client        server         [SYN]
11.7         server        client         [SYN,ACK]
11.8         client        server         [ACK]
12.0         client        server         [POST]
12.1         client        server         Continuation
39.0         server        client         ACK
46.0         server        client         ACK
150.0        server        client         TCP segment of reassembled PDU
311.0        client        server         ACK
324.0        server        client         HTTP/1.1 200 OK (text/html)
512.0        client        server         ACK

Реальный пост и ответ очень короткие. В основном содержимое POST-запроса:

cmd=getCurXY&chan=CH_L_JX

А содержание ответа, который я сейчас отправляю, просто:

cmd=noresponse

Ответ отправляется как Transfer-Encoding: chunked.

Может ли эта транзакция быть ускорена каким-либо образом?
Зачем ему целая полсекунды?

1 Ответ

0 голосов
/ 02 ноября 2013

Firstable Я настоятельно рекомендую вам добавить этот драгоценный камень в список драгоценных камней вашей группы разработки.

group :development, :test do
    gem 'rack-mini-profiler'
end

Позволяет отслеживать временные транзакции, когда вы выполняете запросы AJAX или любые другие запросы из веб-браузера. Также помните, что Webrick (сервер разработки по умолчанию, используемый Rails) является довольно медленным сервером разработки, поэтому, если вы можете, я рекомендую вам использовать Puma в качестве сервера разработки и Unicorn в качестве рабочего.

Кроме того, вам действительно нужно использовать контроллер Rails для управления этими запросами? Очень хорошей реализацией для подобных проектов является использование промежуточного программного обеспечения. Это все еще код ruby, но он не загружает все функции Rails, что ускоряет ответы. Вы можете найти дополнительную информацию в http://railscasts.com/episodes/319-rails-middleware-walkthrough

Привет.

...