在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如果您能详细介绍如何使用它,我可以研究一下。请注意,这会完全禁用缓存–如果您希望仅在服务器端更改脚本时才重新加载浏览器,这对您没有帮助!请注意,这将完全禁用缓存–如果您希望仅在服务器端更改脚本时才重新加载浏览器,这对您没有帮助!