Вопрос о веб-сервере C и Chrome Dev - PullRequest
0 голосов
/ 21 ноября 2010

Я недавно начал погружаться в программирование http на C и имею работающий сервер, который может обрабатывать GET и POST. Мой вопрос касается времени загрузки моего сайта и того, как мне следует отправлять заголовки ответа и ответное сообщение.

Я заметил, что в инструменте отслеживания ресурсов Chromes почти нет (несколько мс) времени подключения / отправки / прокси / блокировки / ожидания в большинстве случаев (в той же сети, что и на сервере), но время получения может сильно отличаться , Я не совсем уверен, что включает в себя время получения. В основном я наблюдаю длительное время приема (от 40 до 140 мс и более) файлов png, иногда файлов javascript и редко других файлов, но это не совсем согласовано.

Может ли кто-нибудь пролить свет на это для меня?

Я еще не проводил много испытаний, но мне было интересно, поменял ли бы я метод, который я использую для отправки заголовка / сообщения. В настоящее время каждый файл для сайта кэшируется в памяти сервера вместе с его заголовком (все в одном и том же символе *). Когда я отправляю файл, который был запрошен, я просто выполняю 1 вызов send () со списком заголовок / файл (он не включает никаких строковых операций, поскольку все это делается заранее при запуске сервера).

Было бы лучше разбить его на несколько небольших вызовов send ()?

Только некоторые статистические данные, которые я получаю с помощью инструментов разработчика Chrome (опять же, в локальной сети через беспроводное соединение с маршрутизатором), сайт загружается от 120 мс до 570 мс. Это 19 файлов на общую сумму 139,85 КБ. Компьютер, на котором он установлен, является нетбуком Asus 901 (Atom 1.6 ГГц, 2 ГБ ddr2) с Linux TinyCore. Я знаю, что есть некоторые оптимизации, которые я мог бы сделать с тем, как запускаются потоки, и некоторые другие вещи, но не уверен, что это сильно влияет на это.

1 Ответ

1 голос
/ 21 ноября 2010

Если вы отправляете весь ответ за один send(), вам следует установить опцию сокета TCP_NODELAY.

Если это не поможет, вы можете попробовать использовать инструмент захвата пакетов.как Wireshark , чтобы увидеть, если вы можете определить, где вводится задержка.

...