我在特定服务器上托管了一个网页 index.html 。我已将example.com
指向example.com/index.html
。因此,当我在index.html中进行更改并保存它,然后尝试打开example.com时,不会反映更改。网页被缓存的原因。
然后我手动刷新页面,因为它加载了新的副本,而不是从缓存,它工作正常。但我不能要求我的客户这样做,他们希望一切都很完美。所以我的问题是,有关如何每次从服务器加载文件而不是从缓存加载文件的技巧或技巧?
P.S:我知道CSS,JS和图像文件的技巧,即附加?v=1
但不知道如何为index.html执行此操作。
任何帮助将不胜感激。谢谢!
答案 0 :(得分:44)
由此:
<meta http-equiv="expires" content="0">
将内容设置为“0”表示浏览器始终从Web服务器加载页面。
答案 1 :(得分:7)
meta标签对我没有用。我从实现过滤器或控制器的java类中设置标头。它起作用了。这是代码
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1
httpResponse.setHeader("Pragma", "no-cache"); // HTTP 1.0
httpResponse.setDateHeader("Expires", 0); // Proxies.
答案 2 :(得分:3)
截至2018年,只有两种最可靠的方式
1)**<meta http-equiv="expires" content="0">**
使用此元标记,但要小心,因为只要浏览器处理完网页,此标记就会破坏页面的所有缓存。
2)在服务器上为每个页面请求生成一个唯一的ID,并在HTML文档内的所有文件名的末尾添加此ID?在每次需要从服务器加载的图像,文档,css / js文件,视频等附加唯一ID之前。例如,如果您有像<img src="images/profile223.jpg" alt="profile picture">
这样的HTML标记,那么在服务器端将唯一ID添加到文件名的末尾,如echo '<img src="images/profile223.jpg?'.$uniqueid.'"" alt="profile picture">';
。在这个例子中我使用php,但你可以在任何语言上生成唯一的ID。 Google,Facebook,Microsoft,Twitter等所有大公司都使用这种技术,因为它是最有效的方式,不会影响您希望存储在用户浏览器上的缓存数据,如登录会话ID。此技术与浏览器兼容并支持旧版本的IE,Firefox,Chrome,Safari和Opera。您可以使用相同的技术在网址末尾添加唯一ID
答案 3 :(得分:1)
您可以使用该文件发送额外的标头,以告知客户端(浏览器)不得缓存该文件。如果您有Apache,请查看mod_expires。如果您使用服务器端脚本语言(如PHP),您也可以使用它来解决它。
答案 4 :(得分:1)
您可以尝试以下方法。它对我有用。
请在您的.htaccess文件中添加以下代码行。
<IfModule mod_headers.c>
<FilesMatch "\.(html|php)$">
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires 0
</FilesMatch>
<FilesMatch "\.(ico|pdf|jpg|png|gif|js|css)$">
Header set Cache-Control "max-age=172800, public, must-revalidate"
</FilesMatch>
</IfModule>
如果使用上面的代码,浏览器将不会缓存.html文件。
答案 5 :(得分:1)
我强烈建议您不要使用meta标签,而是使用Murali Krishna Bellamkonda发布的htaccess。那将永远是最好和最安全的可靠方式。您可以微调您的整个系统以保持长时间缓存,在特定时间刷新文件,等等。 继续尝试一下所有的meta标签,看看会发生什么! (不,我不会) 查看带有ExpiresDefault A5的标头集Cache-Control“ max-age = 5,不可变”,以了解是否没有缓存选项。
答案 6 :(得分:0)
我的网站遇到过这个问题。在您的网址中添加q =&#39;&#39;
http://yoururl.com/somelinks?q=fill_with_random_number
对我来说,它有效
答案 7 :(得分:0)
将此meta标记添加到标题对于大多数浏览器都适用(在这种情况下,不会缓存index.html):
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />
有点晚了,但可能会帮助别人!