【发布时间】:2021-05-26 01:47:50
【问题描述】:
我使用单独的CSS 从本地文件加载背景图像。一个乏味的事情是PHP 在我修改文件后没有更新它的缓存。对我来说,给后台 URL 一个随机数也行不通。
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1 width=device-width">
<title>PHP-001</title>
<link rel="stylesheet" href="./public/css/styles.css?v=<?php echo time(); ?>">
</head>
<body>
<section>
test
</section>
</body>
</html>
section {
background: url("./public/images/bg1.jpg?v=002");
}
所以我将<style> 元素直接赋予<head> 元素以强制更新PHP。这个基本上可以工作,但它不会将图像永久保存到浏览器文件中。在我删除<style> 部分然后尝试从CSS 加载图像后,它不再工作了。
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1 width=device-width">
<title>PHP-001</title>
<style media="screen">
header {
background: url("./public/images/section.png?v=<?php echo time(); ?>");
}
</style>
</head>
<body>
<section>
test
</section>
</body>
</html>
我想从CSS 文件加载/重新加载我的背景图片。
有什么技巧可以解决这个问题吗?
【问题讨论】:
-
这一切似乎都与 PHP 无关,或者至少不清楚为什么会这样。
A tedious thing is PHP does not update its cache after I modified the file到底是什么意思?与其向我们提供您对问题原因的推测(没有提供任何明确的证据),不如告诉我们您看到的实际行为以及导致您出现问题的原因会更有用。 FWIW PHP 不会缓存您的 CSS 文件。但是网络服务器可能。或者浏览器可能。或者您是说 time() 函数有问题?有点不清楚。 -
正如 ADyson 所说,这根本不是 PHP。 CSS 文件是静态内容,默认情况下所有 HTTP 服务器都使用长期缓存标头提供服务。然后,这些文件会被客户端浏览器和中间缓存(例如:CDN、代理等)相应地缓存。这一切都按预期工作,除了您在不更改文件名的情况下更改文件的内容。正如其他人所建议的那样,您可以将垃圾添加到 URL 并以这种方式破坏缓存,但根本原因是内容更改时您没有更改文件名。
标签: php html css browser reload