Is there a way to tell curl to not use cache
You can use CURLOPT_FRESH_CONNECT
for this. From curl_setopt
CURLOPT_FRESH_CONNECT TRUE to force the use of a new connection instead of a cached one.
curl_setopt($curl1, CURLOPT_FRESH_CONNECT, TRUE);
According to RFC 7234 - Hypertext Transfer Protocol (HTTP/1.1): Caching and 5.2. Cache-Control
The "Cache-Control" header field is used to specify directives for caches along the request/response chain.
5.2.1. Request Cache-Control Directives defines several directives to control the use of caches for a response. One of these is
5.2.1.4. no-cache
The "no-cache" request directive indicates that a cache MUST NOT use a stored response to satisfy the request without successful validation on the origin server.
So setting an appropriate header with
curl_setopt($curl1, CURLOPT_HTTPHEADER, array("Cache-Control: no-cache"));
should ensure, that a valid and up to date response will be returned. I understand, that this may still result in a cached response, if the validation on the server allows to do so.
However, 5.2.2.1. must-revalidate is a Response Cache-Control Directive given by a server together with the response to a request
[...] The must-revalidate directive ought to be used by servers if and only if failure to validate a request on the representation could result in incorrect operation, such as a silently unexecuted financial transaction.
curl_setopt($curl1, CURLOPT_FRESH_CONNECT, 1); // don't use a cached version of the url
CURLOPT_FRESH_CONNECT TRUE to force use of a new connection instead of a cached one.
check example here
you can set header
$headers = array(
"Cache-Control: no-cache",
);
curl_setopt($curl1, CURLOPT_HTTPHEADER, $headers);
this link may be helpful to you http://www.php.net/manual/en/function.curl-setopt.php#96903