【问题标题】:How to clear HTML data?如何清除 HTML 数据?
【发布时间】:2014-01-28 11:45:47
【问题描述】:

我们可以像这样使用查询选择器来清除 CSS 样式表缓存:

<link rel="stylesheet" type="text/css" href="stylesheet.css?v=1.0" />

每当我们更改样式表并需要浏览器清除我们的 CSS 样式表时,我们可以更改版本号,如 1.1、1.2 等。

有没有类似的东西可以清除 HTML 数据?


我有这样的 HTML 标记:

<img src="picturename.jpg" /><!--picture of a **man**--->

稍后我需要更改图片但文件名相同

<img src="picturename.jpg" /><!--picture of a **woman**--->

我删除了男人的照片并上传了女人的照片。但是,当我在浏览器中查看时,即使在非常干净刷新 (Ctrl+F5) 并且还清除了浏览器的设置之后,它仍显示缓存的图片是一个男人的图片。

更新


我开始知道每次清除缓存都不是一个好主意,所以我想通过 jquery 用以下概念来实现:

  1. 首先将图片src从picturename.jpg设置为 picturename.jpg?v=1
  2. 将号码存储在本地存储或 cookie 中。但我很困惑 使用 cookie 就像用户删除 cookie 然后存储 变量也将被删除,因此将其存储在本地存储中 会更好。
  3. 检索本地存储变量号并检查是否全局 变量数超出则只改变图片src号 像这样:

var cnum = 1; // author will change this number when needed
$(document).ready(function(){
var ccnum; // store in local storage then increase the number if cnum is greater than ccnum
//now change the src as of image

我需要更改我所有图库图片的 src $('#mygallery img'),实际上我有数百张图片将在一段时间后更改但需要相同的文件名。

我该怎么办?

【问题讨论】:

标签: jquery html browser-cache


【解决方案1】:

您可以使用随机数/时间戳将字符串附加到文件名,这将导致浏览器重新加载图像,因为它是不同的 URL,但文件名可以相同。

<img src="picturename.jpg?201401281148" />

【讨论】:

  • 如果失败,您可能会遇到服务器端缓存图像的问题。
【解决方案2】:

您可以设置缓存控制标头,强制浏览器每次都获取一个新副本。

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">

这将确保 html 页面始终是最新的。如果您希望图像保持最新,您应该在 ht 访问中设置 no-cache 值,或者使用查询中断器

控制增量更改:

<img src="pic.jpg?version=1">

或者总是获取最新消息

<img src="pic.jpg?version=[timestamp]">

但是,这两种方法都需要您更改各个页面上的代码。我建议(如果您的逻辑允许的话)指定不缓存的 ht 访问规则

# your document html 
  ExpiresByType text/html                 "access plus 0 seconds"
# media: images, video, audio
  ExpiresByType image/gif                 "access plus 0 seconds"
  ExpiresByType image/png                 "access plus 0 seconds"
  ExpiresByType image/jpg                 "access plus 0 seconds"
  ExpiresByType image/jpeg                "access plus 0 seconds"

上述实现起来既快速又容易,并且会阻止您的用户浏览器缓存 HTML 和图像,但不会让您缓存任何您可能想要的图像(例如,您的徽标可能不会定期更改。因此,为了进行精细控制,您'将要在源 url 中使用查询断路器。

【讨论】:

  • 强制整个页面不被缓存通常不是一个好主意,如果页面上有大量的内容/图像,它们都不会被缓存,这会影响加载时间和如果通过有限的数据连接查看用户的数据使用情况。
  • 感谢@Wabs,更新了答案,为不同的场景提供了不同的选项。
  • 如果在途中还有其他现金,例如在代理服务器上,这将在很多时候失败。 Meta 通常是控制缓存行为的一种非常糟糕的方式。见mnot.net/cache_docs/#WORK
猜你喜欢
  • 2021-08-15
  • 2014-04-30
  • 2014-03-07
  • 1970-01-01
  • 1970-01-01
  • 2013-06-05
  • 2020-07-26
  • 2011-05-12
  • 2010-09-30
相关资源
最近更新 更多