我正在使用curl在我的bitbucket存储库上获取HTML文件。我不能给你直接链接,因为回购是私有的,但它来自以下形式:https://bitbucket.org/uname/project/downloads/index.html
我使用以下代码执行此操作:
mCurl = curl_easy_init();
curl_easy_setopt(mCurl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(mCurl, CURLOPT_SSL_VERIFYPEER, 0L);
curl_easy_setopt(mCurl, CURLOPT_SSL_VERIFYHOST, 0L);
curl_easy_setopt(mCurl, CURLOPT_URL, String::toAnsi(address).c_str());
curl_easy_setopt(mCurl, CURLOPT_WRITEFUNCTION, _internal_curl_write_callback);
curl_easy_setopt(mCurl, CURLOPT_WRITEDATA, this);
curl_easy_perform(mCurl);
在开始更改页面(在repo上删除它并将其上传到新)之后,结果看起来很好,但即使重新启动应用程序,curl仍会检索旧版本的页面。在浏览器中,如果我输入该链接,我会得到新的链接。
我可以禁用curl中的缓存吗?或者你知道这种行为的任何其他可能的解释吗?
答案 0 :(得分:0)
要从服务器请求非缓存页面,请设置标题选项Cache-control: no-cache
。您可以使用cURL执行以下操作:
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Cache-control: no-cache");
curl_easy_setopt(mCurl, CURLOPT_HTTPHEADER, headers);
如果您在同一程序中重复使用连接,则可能还需要启用:
curl_easy_setopt(mCurl, CURLOPT_FRESH_CONNECT, true);
curl_easy_setopt(mCurl, CURLOPT_FORBID_REUSE , true);