避免在客户端进行浏览器缓存

时间:2020-02-04 09:05:47

标签: javascript html browser-cache

我们有一个网站(纯html / js / css)。在我们的站点页面上,我们具有指向PDF文件的链接,这些链接看起来像这样:<a href="../files/myFile.pdf">My file link</a>。因此,问题来了:有时我们需要更新PDF。我们更新这些文件,然后转到网站,按链接-我们会看到旧文件。 Ctrl+F5或Firefox中的F5-我们会看到更新的文件。不好我认为这个问题是由缓存引起的。
在我们的网站页面(包含链接的html页面)中,我们添加了以下标记:

    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
    <meta http-equiv="Pragma" content="no-cache">
    <meta http-equiv="Expires" content="0">

但这没有帮助。我们如何避免客户端缓存? 我在这里读了一些问题。此解决方案来自stackoverflow。)另外,我也知道向页面URL添加随机参数,但是有些人说这是不好的方法。
请帮助解决此问题。我们可以仅使用JS来避免客户端缓存吗?也许服务器端的.htaccess文件是可能的,但是我们在那里没有访问权限。

1 个答案:

答案 0 :(得分:-1)

您可以在Nginx或Apache Web服务器中禁用缓存:

    location /pdf_file_location {
        root /your/site/public;
        index index.html;

        # kill cache
        add_header Last-Modified $date_gmt;
        add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
        if_modified_since off;
        expires off;
        etag off;
    }

有关此内容的更多信息,您可以阅读here

或者以最简单的方式,在URL中添加一个可变参数(您可以生成序列,时间戳,文件的固定版本或任何其他随机值):

<a href="../files/myFile.pdf?v=1580807492744">My file link</a>

?v=1580807492744-如果值更改,则缓存将无法工作