更新服务器后如何清除缓存

Posted

技术标签:

【中文标题】更新服务器后如何清除缓存【英文标题】:How can I clear the cache after updating the Server 【发布时间】:2021-07-14 12:52:24 【问题描述】:

我开发了一个应用程序,但是当我从应用程序推送最新版本到服务器时,CSS 和 JS 文件没有更新。旧文件正在显示。更新文件后如何清除缓存?

像 jcubic 一样编辑

现在我就是这样使用破坏者的。

index.html:

<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>AIS</title>
    <script src="index.php"></script>
    <link rel="stylesheet" href="<?= with_hash('style.css') ?>">
</head>

index.php:

<php?

function with_hash($url) 
   return $url . "?" . md5(file_get_contents($url));

?>

错误信息:

Refused to apply style from 'http://127.0.0.1:5500/%3C?=%20with_hash(%27style.css%27)%20?%3E' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.

【问题讨论】:

PHP 代码在 html 文件中不起作用。请将扩展名更改为 php。 【参考方案1】:

您可以使用所谓的缓存克星。将唯一 ID 添加到应用程序中 JS 和 CSS 的 URL。我个人使用文件内容的哈希值,你可以用 PHP 或任何其他服务器端脚本编写 HTML 文件,但 PHP,如果你有单个 HTML 文件,是最简单的。

在 PHP 中它可能如下所示:

<php?

function with_hash($url) 
   return $url . "?" . md5(file_get_contents($url));

?><!DOCTYPE HTML>
...
<link rel="stylesheet" href="<?= with_hash('produktion.css') ?>">

如果应用程序用于像 Netlify 这样的静态托管,则需要生成带有哈希的 HTML 文件。你可以使用 Webpack 轻松做到这一点。

【讨论】:

我认为有超过 8 个 html 文件。我还应该使用缓存破坏器吗? 以及它在我的 produktion.css 文件中的外观。我还应该添加代码还是只在 html 文件中添加代码? @KlausM。为什么拥有更多的 HTML 文件会改变任何东西?要禁用缓存,请使用缓存破坏器,没有其他方法。除非您使用服务工作者,否则您可以拥有自己的逻辑来缓存文件。 好的,我明白了,但我必须在 js、css 文件中或仅在 html 文件的标题中添加一段代码吗? @KlausM。解决方案很简单,您有一个指向资源的 URL,在文件末尾添加一些内容以禁用缓存。在页脚和页眉中添加文件或动态添加文件都没有关系。而且您不需要使用哈希,这只是一个示例,您可以使用版本命名文件,这是禁用不需要的缓存的另一种方法。

以上是关于更新服务器后如何清除缓存的主要内容,如果未能解决你的问题,请参考以下文章

如何清除tomcat缓存

如何清除 Rails 动作缓存? (Rails.cache.clear 不起作用)

js清除浏览器缓存

如何清除共享链接缓存?

如何清除asp.net中的服务器缓存?

nginx_cache_purge模块如何动态清除缓存,加分?