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

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

【问题讨论】:

    标签: delphi wininet


    【解决方案1】:

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

    【讨论】:

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