Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.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
Javascript 避免在客户端进行浏览器缓存_Javascript_Html_Browser Cache - Fatal编程技术网

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

Javascript 避免在客户端进行浏览器缓存,javascript,html,browser-cache,Javascript,Html,Browser Cache,我们有一个网站(纯html/js/css)。在我们的网站页面中,我们有指向PDF文件的链接,这些链接如下:。所以,问题是:有时我们需要更新PDF。我们更新这些文件,然后去网站,按链接-我们看到旧文件Ctrl+F5,或Firefox中的F5——我们可以看到更新的文件。这不好。我认为这个问题是由缓存引起的在我们的站点页面(包含链接的html页面)中,我们添加了这样的标记: <meta http-equiv="Cache-Control" content="no-cache, no-st

我们有一个网站(纯html/js/css)。在我们的网站页面中,我们有指向PDF文件的链接,这些链接如下:
。所以,问题是:有时我们需要更新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
文件,但我们没有访问权限

您可以在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;
    }
关于这方面的更多信息,您可以阅读

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



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

这将阻止缓存。您可以使用sample.doc?abc链接到您的文档,并用随机垃圾替换abc。感谢您的回复,但我认为这不是一个好的解决方案。问题出在哪里:页面缓存还是文件缓存?我想它在第页:因为链接文本是旧的。我说的对吗?不,不对。当然,如果用户按F5,链接将被更新。问题是:当用户打开站点,用链接查看我们的页面(例如,Page1),关闭浏览器中的选项卡时,该页面进入缓存。我们更新文件。用户再次打开我们的页面1,其中包含旧链接。F5-并且它包含新链接。我们怎样才能避免按F5键呢?)因为有时候用户不知道他必须按F5键。好的,谢谢,我会阅读这些信息。但您确定问题只存在于文件名中吗?当我们转到包含链接的页面并将光标悬停在链接上时,我们会看到旧的文件地址。F5之后-新地址。也许问题出在页面上,而不是文件中?是的,我确定。单击链接时,web浏览器将保存缓存;再次单击同一链接时,浏览器将读取缓存。当您添加随机值作为未使用的GET参数时(如上所示),浏览器会认为这是一个没有缓存的不同URL-如果不尝试,您将不会发现:)我们尝试重命名文件(旧名称-myFile.pdf,新名称-myFile1.pdf)。当我们转到包含链接的页面并将鼠标悬停在链接上时,我们会看到myFile.pdf。所以链接文本没有更新。你甚至上传了新页面吗?我认为你应该禁用index.html文件缓存:这应该可以解决问题