|
|
@@ -920,6 +920,37 @@ class SimplePie
|
|
|
$this->cache_location = (string) $location;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Return the filename (i.e. hash, without path and without extension) of the file to cache a given URL.
|
|
|
+ */
|
|
|
+ public function get_cache_filename($url)
|
|
|
+ {
|
|
|
+ // Append custom parameters to the URL to avoid cache pollution in case of multiple calls with different parameters.
|
|
|
+ $url .= $this->force_feed ? '#force_feed' : '';
|
|
|
+ $options = array();
|
|
|
+ if ($this->timeout != 10)
|
|
|
+ {
|
|
|
+ $options[CURLOPT_TIMEOUT] = $this->timeout;
|
|
|
+ }
|
|
|
+ if ($this->useragent !== SIMPLEPIE_USERAGENT)
|
|
|
+ {
|
|
|
+ $options[CURLOPT_USERAGENT] = $this->useragent;
|
|
|
+ }
|
|
|
+ if (!empty($this->curl_options))
|
|
|
+ {
|
|
|
+ foreach ($this->curl_options as $k => $v)
|
|
|
+ {
|
|
|
+ $options[$k] = $v;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!empty($options))
|
|
|
+ {
|
|
|
+ ksort($options);
|
|
|
+ $url .= '#' . urlencode(var_export($options, true));
|
|
|
+ }
|
|
|
+ return call_user_func($this->cache_name_function, $url);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* Set whether feed items should be sorted into reverse chronological order
|
|
|
*
|
|
|
@@ -1429,8 +1460,8 @@ class SimplePie
|
|
|
// Decide whether to enable caching
|
|
|
if ($this->cache && $parsed_feed_url['scheme'] !== '')
|
|
|
{
|
|
|
- $url = $this->feed_url . ($this->force_feed ? '#force_feed' : '');
|
|
|
- $cache = $this->registry->call('Cache', 'get_handler', array($this->cache_location, call_user_func($this->cache_name_function, $url), 'spc'));
|
|
|
+ $filename = $this->get_cache_filename($this->feed_url);
|
|
|
+ $cache = $this->registry->call('Cache', 'get_handler', array($this->cache_location, $filename, 'spc'));
|
|
|
}
|
|
|
|
|
|
// Fetch the data via SimplePie_File into $this->raw_data
|