InternetOpenURL 的默认缓存刷新时间是多少?

Posted

技术标签:

【中文标题】InternetOpenURL 的默认缓存刷新时间是多少?【英文标题】:What is the default cache refresh time of InternetOpenURL? 【发布时间】:2013-06-11 13:19:49 【问题描述】:

我的一个程序使用 InternetOpenURL,但没有指定 INTERNET_FLAG_RELOAD。我看到该调用将从缓存中读取网页(如果存在)。我 5 天前更改了网页,但我仍然得到缓存版本(除非我指定上面的标志。)有谁知道缓存何时或是否会更新?我希望它最终会被刷新(可能过于乐观!)

【问题讨论】:

【参考方案1】:

很可能原始资源的过期日期超过 5 天,这就是如果您不告诉InternetOpenURL() 不时重新检查服务器,缓存版本会继续使用的原因。但是,INTERNET_FLAG_RELOAD 会强制它重新下载资源,无论它是否实际被修改过。对于您的需求,这可能有点过于暴力。尝试改用INTERNET_FLAG_RESYNCHRONIZE。这允许InternetOpenURL() 检查资源是否已被修改,然后仅在需要时重新下载,否则继续使用缓存的副本。

【讨论】:

感谢 Remy,感谢您提供有关 RESYNCHRONIZE 的说明。有没有办法确定缓存页面的到期日期?它是由网络服务器设置的吗?我已经搜索过,似乎没有找到任何关于它的信息。基本上我想知道新版本是否会被我没有设置标志的 InternetOpenURL 调用获取。 缓存管理和过期可以由Web服务器设置,是的。检查共振标题。最终,InternetOpenURL() 应该重新检查原始资源,尽管偶尔强制它一次是个好主意,以防万一。

以上是关于InternetOpenURL 的默认缓存刷新时间是多少?的主要内容,如果未能解决你的问题,请参考以下文章

减少 InternetOpenUrl 超时?

带有自签名证书的 InternetOpenUrl

Windows 上的 InternetOpenUrl 功能是不是足够安全?如果没有,如何让它变得更强?

如何使用 InternetOpen、InternetOpenUrl 和 InternetReadFile [关闭]

MyBatis之缓存

InternetOpenUrl 在第三次和后续调用中挂起并失败