【问题标题】:C Web Server and Chrome Dev tools questionC Web 服务器和 Chrome 开发工具问题
【发布时间】:2010-11-21 03:32:59
【问题描述】:

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

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

谁能帮我解释一下?

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

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

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

【问题讨论】:

  • 您是否向您的网络服务器添加了任何分析或调试输出信息?在代码中的“主要”操作之间添加一些高分辨率的时间信息可能会很有用,这样您就可以从服务器端看到请求-响应周期的进展。
  • 我目前没有任何分析,并且调试最少(根据需要删除/添加它)。一直严重依赖 chrome 开发工具,可能严重依赖。在良好的网站交付/加载时间的速度方面,我确实在寻找我应该寻找的领域。

标签: c++ c http sockets


【解决方案1】:

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

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

【讨论】:

  • 我确实设置了 TCP_NODELAY 标志,我会看看 Wireshark 能告诉我什么,谢谢你的提示。
猜你喜欢
  • 2017-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多