Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
gae-PHP中的文件缓存_Php_Google App Engine_Caching - Fatal编程技术网

gae-PHP中的文件缓存

gae-PHP中的文件缓存,php,google-app-engine,caching,Php,Google App Engine,Caching,我在使用gae php作为使用“file\u get\u contents”的简单代理时遇到了一些问题 当我第一次加载文件时,我得到了可用的最新版本。 但是如果我更改了文件的内容,我不会立即获得最新版本 $result = file_get_contents('http://example.com/'.$url); 我找到的临时解决方案是在查询字符串的末尾添加一个随机变量,这样我每次都可以获得文件的新版本: $result = file_get_contents('http://example

我在使用gae php作为使用“file\u get\u contents”的简单代理时遇到了一些问题

当我第一次加载文件时,我得到了可用的最新版本。 但是如果我更改了文件的内容,我不会立即获得最新版本

$result = file_get_contents('http://example.com/'.$url);
我找到的临时解决方案是在查询字符串的末尾添加一个随机变量,这样我每次都可以获得文件的新版本:

$result = file_get_contents('http://example.com/'.$url.'?r=' . rand(0, 9999));
但是这个技巧不适用于例如带有参数的api调用

我尝试在gae的php.ini中禁用APC缓存(使用APC.enabled=“0”),并使用
clearstatcache()在我的脚本中,但两者都不起作用

有什么想法吗

谢谢。

如http流包装器使用
urlfetch
中所述。由于
urlfetch
提供了公共/共享缓存,因此不允许单个应用清除缓存。对于您自己的服务,您可以根据需要设置HTTP缓存头以减少或取消缓存

此外,还可以添加HTTP请求头,指示允许返回的数据的最大年限。邮件列表线程中给出的python示例是:

result = urlfetch.fetch(url, headers = {'Cache-Control' : 'max-age=300'})
根据,修改后的示例如下:

<?php
$opts = [
  'http' => [
    'method' => 'GET',
    'header' => "Cache-Control: max-age=60\r\n",
  ],
];
$context = stream_context_create($opts);
$file = file_get_contents('http://www.example.com/', false, $context);
?>

如http流包装器使用
urlfetch
中所述。由于
urlfetch
提供了公共/共享缓存,因此不允许单个应用清除缓存。对于您自己的服务,您可以根据需要设置HTTP缓存头以减少或取消缓存

此外,还可以添加HTTP请求头,指示允许返回的数据的最大年限。邮件列表线程中给出的python示例是:

result = urlfetch.fetch(url, headers = {'Cache-Control' : 'max-age=300'})
根据,修改后的示例如下:

<?php
$opts = [
  'http' => [
    'method' => 'GET',
    'header' => "Cache-Control: max-age=60\r\n",
  ],
];
$context = stream_context_create($opts);
$file = file_get_contents('http://www.example.com/', false, $context);
?>

如http流包装器使用
urlfetch
中所述。由于
urlfetch
提供了公共/共享缓存,因此不允许单个应用清除缓存。对于您自己的服务,您可以根据需要设置HTTP缓存头以减少或取消缓存

此外,还可以添加HTTP请求头,指示允许返回的数据的最大年限。邮件列表线程中给出的python示例是:

result = urlfetch.fetch(url, headers = {'Cache-Control' : 'max-age=300'})
根据,修改后的示例如下:

<?php
$opts = [
  'http' => [
    'method' => 'GET',
    'header' => "Cache-Control: max-age=60\r\n",
  ],
];
$context = stream_context_create($opts);
$file = file_get_contents('http://www.example.com/', false, $context);
?>

如http流包装器使用
urlfetch
中所述。由于
urlfetch
提供了公共/共享缓存,因此不允许单个应用清除缓存。对于您自己的服务,您可以根据需要设置HTTP缓存头以减少或取消缓存

此外,还可以添加HTTP请求头,指示允许返回的数据的最大年限。邮件列表线程中给出的python示例是:

result = urlfetch.fetch(url, headers = {'Cache-Control' : 'max-age=300'})
根据,修改后的示例如下:

<?php
$opts = [
  'http' => [
    'method' => 'GET',
    'header' => "Cache-Control: max-age=60\r\n",
  ],
];
$context = stream_context_create($opts);
$file = file_get_contents('http://www.example.com/', false, $context);
?>


好的,谢谢。缓存在一段时间后自行清除,但我想我必须从服务器设置缓存头。那太糟糕了。在gae php中,除了使用urlfetch之外,还有其他方法可以实现这一点吗?更新的响应中包含了带有缓存控制头的fetch示例,这是在服务器端执行此操作的一种替代方法,但使用您的服务的任何其他人都不需要这样做,否则会有过时数据的风险。这很酷,我看不出你可以在请求中设置标题。好的,谢谢。缓存在一段时间后自行清除,但我想我必须从服务器设置缓存头。那太糟糕了。在gae php中,除了使用urlfetch之外,还有其他方法可以实现这一点吗?更新的响应中包含了带有缓存控制头的fetch示例,这是在服务器端执行此操作的一种替代方法,但使用您的服务的任何其他人都不需要这样做,否则会有过时数据的风险。这很酷,我看不出你可以在请求中设置标题。好的,谢谢。缓存在一段时间后自行清除,但我想我必须从服务器设置缓存头。那太糟糕了。在gae php中,除了使用urlfetch之外,还有其他方法可以实现这一点吗?更新的响应中包含了带有缓存控制头的fetch示例,这是在服务器端执行此操作的一种替代方法,但使用您的服务的任何其他人都不需要这样做,否则会有过时数据的风险。这很酷,我看不出你可以在请求中设置标题。好的,谢谢。缓存在一段时间后自行清除,但我想我必须从服务器设置缓存头。那太糟糕了。在gae php中,除了使用urlfetch之外,还有其他方法可以实现这一点吗?更新的响应中包含了带有缓存控制头的fetch示例,这是在服务器端执行此操作的一种替代方法,但使用您的服务的任何其他人都不需要这样做,否则会有过时数据的风险。这很酷,我没有看到您可以在请求中设置标题。