防止URLDownloadToFile从缓存中检索的方法主要是在请求头中设置缓存策略。以下是一些可以尝试的方法:
在发送请求时,可以在HTTP请求头中设置"Cache-Control"和"Pragma"字段,以避免从缓存中检索。例如,可以设置"Cache-Control"为"no-cache"或"no-store",或者设置"Pragma"为"no-cache"。
例如,使用WinInet的API进行设置:
HINTERNET hInternet = InternetOpen(_T("MyAgent"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
HINTERNET hUrl = InternetOpenUrl(hInternet, _T("http://example.com"), NULL, 0, INTERNET_FLAG_RELOAD | INTERNET_FLAG_NO_CACHE_WRITE | INTERNET_FLAG_PRAGMA_NOCACHE, NULL);
如果服务器支持HTTP POST方法,可以使用该方法发送请求,以避免从缓存中检索。
例如,使用WinInet的API发送HTTP POST请求:
HINTERNET hInternet = InternetOpen(_T("MyAgent"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
HINTERNET hUrl = InternetOpenUrl(hInternet, _T("http://example.com"), NULL, 0, INTERNET_FLAG_RELOAD | INTERNET_FLAG_NO_CACHE_WRITE | INTERNET_FLAG_PRAGMA_NOCACHE, NULL);
在URL中添加一个时间戳参数,以避免从缓存中检索。例如,可以将当前时间的时间戳添加到URL中。
例如,在C++中生成时间戳:
time_t now = time(NULL);
char timestamp[50];
strftime(timestamp, sizeof(timestamp), "%Y-%m-%d %H:%M:%S", localtime(&now));
在URL中添加时间戳参数:
std::string url = "http://example.com?timestamp=" + std::string(timestamp);
以上是一些可以尝试的方法,但是具体的实现方式可能因应用程序和服务器的不同而有所不同。
云+社区技术沙龙[第17期]
原引擎 | 场景实战系列
《民航智见》线上会议
DBTalk技术分享会
Elastic 中国开发者大会
“中小企业”在线学堂
Elastic Meetup Online 第一期
腾讯技术开放日
领取专属 10元无门槛券
手把手带您无忧上云