Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.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
在PHP中,生成一个随机但唯一的字符串以绕过浏览器缓存_Php_Caching_Time - Fatal编程技术网

在PHP中,生成一个随机但唯一的字符串以绕过浏览器缓存

在PHP中,生成一个随机但唯一的字符串以绕过浏览器缓存,php,caching,time,Php,Caching,Time,大多数人都知道,启用缓存后,很难看到对文件所做的更改。例如,您的样式表没有反映您对它所做的更改。解决方案是附加一个“版本号”,如下所示: <link rel="stylesheet" href="css/styles.css?v=2"> <link href="/stylesheet.css?<?php echo time(); ?>" rel="stylesheet" type="text/css" /> 然而,总是手动设置这个值是相当麻烦的。我提出

大多数人都知道,启用缓存后,很难看到对文件所做的更改。例如,您的样式表没有反映您对它所做的更改。解决方案是附加一个“版本号”,如下所示:

<link rel="stylesheet" href="css/styles.css?v=2">
<link href="/stylesheet.css?<?php echo time(); ?>" rel="stylesheet" type="text/css" />

然而,总是手动设置这个值是相当麻烦的。我提出的一个解决方案是让PHP在每个缓存之前生成一个唯一的值。最简单的方法是根据日期创建一个数字。更具体地说,我将考虑PHP文件上次更新的时间。

<link rel="stylesheet" href='css/styles.css?v=<?php echo date("ymd-Gi", getlastmod()) ?>'>

您可以使用
filemtime($css_filename)
()获取css文件的最后修改,而不是检查PHP脚本修改日期的
getlastmod()

例如,这将是

<link rel="stylesheet" href='css/styles.css?v=<?php echo date("ymd-Gi", filemtime("css/styles.css")) ?>'>

您可以使用如下内容:

<link rel="stylesheet" href="css/styles.css?v=2">
<link href="/stylesheet.css?<?php echo time(); ?>" rel="stylesheet" type="text/css" />
uniqid()是一个PHP函数,它根据以微秒为单位的当前时间生成唯一标识符。你可以相信

echo uniqid();

这是一个调试问题吗?因为禁用浏览器的缓存会更容易。@Robert如果您能详细介绍如何使用它,我可以研究一下。请注意,这会完全禁用缓存–如果您希望仅在服务器端更改脚本时才重新加载浏览器,这对您没有帮助!请注意,这将完全禁用缓存–如果您希望仅在服务器端更改脚本时才重新加载浏览器,这对您没有帮助!