Page 1 of 1

大量DNS请求无法响应,导致网页加载时间太长

Posted: Mon Jan 08, 2024 2:50 pm
by Pixellord
我在ESP32S3上写了个小程序,让WiFi开始AP模式,然后运行REST server。我是用ESP-IDF 5.1.2写的额。这是我的Main函数
  1. void app_main(void)
  2. {
  3.     nvs_flash_init();
  4.     ESP_ERROR_CHECK(esp_netif_init());
  5.     ESP_ERROR_CHECK(esp_event_loop_create_default());
  6.  
  7.     initialise_mdns();
  8.     netbiosns_init();
  9.     netbiosns_set_name(CONFIG_EXAMPLE_MDNS_HOST_NAME);
  10.  
  11.     wifi_init_softap();
  12.     ESP_ERROR_CHECK(init_fs());
  13.     ESP_ERROR_CHECK(start_rest_server(CONFIG_EXAMPLE_WEB_MOUNT_POINT));
  14. }
我遇到的问题是,网页加载的时间很长,一个2MB以下的网页需要加载20到30秒。
2024-01-08 13_03_56-Window.png
2024-01-08 13_03_56-Window.png (54.11 KiB) Viewed 26609 times
我用wireshark看了以后,发现主要是浏览器向ESP发送了很多DNS请求(端口 53),然后产生了很多ICMP的错误。程序里我只写了mdns来解析host的IP地址(端口5353)。
wireshark-dns.png
wireshark-dns.png (62.03 KiB) Viewed 26609 times
2024-01-08 13_28_42-Window.png
2024-01-08 13_28_42-Window.png (120.36 KiB) Viewed 26609 times
这个额外的延迟好像就是DNS引起的,我让WIFI运行STA模式,网页加载很快,没有问题。只有在AP模式下有这个问题。

请问这个问题怎么解决?谢谢