WinINet库缓存通过它访问的任何URL的IP地址。因此,当该URL的IP地址发生变化时,WinInet库的HttpSendRequest
也会转到较旧的IP地址。
并且,如果较旧的IP响应,则WinINet将仅向旧IP发送所有http请求。
有没有办法强制清除WinInet的DNS缓存?
或者
有没有办法强制WinINet将HTTP请求发送到指定的IP地址(因为我们可以使用gethostbyname()
获取更新的IP)?
注意:
答案 0 :(得分:2)
连接时可以尝试使用flag:
INTERNET_FLAG_DONT_CACHE = 0x04000000不添加返回的实体 到缓存。这与首选值相同, INTERNET_FLAG_NO_CACHE_WRITE。
或者您可以查看WinInet文档here中的DeleteUrlCacheEntry
我认为应该这样做。
<强> - UPDATE 强>
从this doc我看到有一个更好的旗帜可以使用它,看看:
INTERNET_FLAG_PRAGMA_NOCACHE 强制请求由源服务器解析,即使代理上存在缓存副本。
<强> - UPDATE 强>
经@Pradeep测试,您可以更改此注册表项以使其工作: HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ DnsCacheEnabled ServerInfoTimeOut和DnsCacheTimeout为0。