c++ - C Web 服务器和 Chrome 开发工具问题

标签 c++ c http sockets

我最近开始深入研究 C 语言的 http 编程,并且有一个可以处理 GET 和 POST 的正常运行的服务器。我的问题涉及我的网站加载时间以及我应该如何发送响应 header 和响应消息。

我注意到在 Chromes 资源跟踪工具中,在大多数情况下(与服务器在同一网络上)几乎没有(几毫秒)连接/发送/代理/阻塞/等待时间,但接收时间可能会有很大差异.我不完全确定接收时间包括什么。我主要看到 png 文件的接收时间很长(40 到 140 毫秒或更多),有时是 javascript 文件,很少有其他文件,但它并不真正一致。

有人能帮我解释一下吗?

我还没有做太多测试,但我想知道我是否改变了我用来发送 header /消息的方法会有帮助。我目前将站点的每个文件连同它的标题一起缓存在服务器内存中(都在同一个 char* 中)。当我发送所请求的文件时,我只使用 header /文件组合执行 1 send() 调用(它不涉及任何字符串操作 b/c,它都是在服务器启动时提前完成的)。

将它分成多个小的 send() 调用会更好吗?

只是我使用 Chrome 开发工具(同样是通过无线路由器连接在本地网络上)获得的一些统计数据,网站加载时间从 120 毫秒到 570 毫秒不等。它有 19 个文件,总共 139.85KB。它所在的计算机是带有 TinyCore linux 的 Asus 901 上网本(atom 1.6ghz,2gb ddr2)。我知道我可以对线程的启动方式和其他一些事情进行一些优化,但不确定这对 atm 有多大影响。

最佳答案

如果您要在一个 send() 中发送整个响应,您应该设置 TCP_NODELAY 套接字选项。

如果这没有帮助,您可能想尝试使用数据包捕获工具,如 Wireshark看看您是否可以发现引入延迟的位置。

关于c++ - C Web 服务器和 Chrome 开发工具问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4236300/

相关文章:

c++ - 检测并移除网格的隐藏表面

c++ - 使用 float 和 double 进行非常小的数字的数学运算

c++ - "Undefined Behavior"真的允许*任何事情*发生吗?

带有重定向但没有往返的 HTTP 响应?

c++ - 计算距对象起点的距离时,_ATL_PACKING 常量有什么用?

c++ - 代码-帮助闰年

c - 计时 CUDA 操作

c - 简单字符串连接的问题

php - 使用 Zend 进行 HTTP 身份验证

linux - cUrl 不会立即发送命令