【发布时间】:2013-06-11 13:19:49
【问题描述】:
我的一个程序使用 InternetOpenURL,但没有指定 INTERNET_FLAG_RELOAD。我看到该调用将从缓存中读取网页(如果存在)。我 5 天前更改了网页,但我仍然得到缓存版本(除非我指定上面的标志。)有谁知道缓存何时或是否会更新?我希望它最终会被刷新(可能过于乐观!)
【问题讨论】:
我的一个程序使用 InternetOpenURL,但没有指定 INTERNET_FLAG_RELOAD。我看到该调用将从缓存中读取网页(如果存在)。我 5 天前更改了网页,但我仍然得到缓存版本(除非我指定上面的标志。)有谁知道缓存何时或是否会更新?我希望它最终会被刷新(可能过于乐观!)
【问题讨论】:
很可能原始资源的过期日期超过 5 天,这就是如果您不告诉InternetOpenURL() 不时重新检查服务器,缓存版本会继续使用的原因。但是,INTERNET_FLAG_RELOAD 会强制它重新下载资源,无论它是否实际被修改过。对于您的需求,这可能有点过于暴力。尝试改用INTERNET_FLAG_RESYNCHRONIZE。这允许InternetOpenURL() 检查资源是否已被修改,然后仅在需要时重新下载,否则继续使用缓存的副本。
【讨论】: