CSS:CSS末尾的问号是什么意思?

3

维基百科中的CSS示例:

#content a[href^="https://"], .link-https {
  background:url("images/external-link-ltr-icon.png?2") no-repeat scroll right center transparent;
  padding:0 13px 0 0;
}

1
你是指背景URL末尾的?2吗? - Oded
7个回答

8

这实际上不是CSS本身的一部分,而是图片查询字符串的一部分。

它与以下内容相同:

http://foo/images/external.png?bar=baz

该网站将把查询字符串参数和值作为请求的一部分。根据提供的值,它可以决定要提供哪个文件。
很可能这是一个版本号。它有助于解决浏览器缓存图像的情况。

2

这通常用于使图片的缓存版本失效。

当你制作一个新版本的图片时,更改编号可以强制浏览器重新加载并不使用缓存版本。

这不是CSS的一部分,而是浏览器的行为。


我应该给那些我可能永远不会更改的背景图片添加"?1"吗? - adamcadot
1
不,你不必这样做。但是,如果你把它改为强制浏览器刷新缓存,那么就可以这样做。 - ehm
@ gooday,不是的。那是一种技巧,需要在您需要使缓存无效之后使用。 - Gabriele Petrioli

1

这可能是所谓的缓存破坏器。它通过服务器设置远期缓存到期日期,并且每当设计师更改该图像时,他可以在样式表中递增数字,从而重新加载图像。


1

除了URL中的那个问号外,这里没有其他的问号。那个问号的作用就像在任何HTTP URL中一样;它后面的内容是一个查询字符串,由响应请求的脚本自行解释。

对于静态图像,这是一种常用的技术,用于打败缓存。但是,数字太小了,不足以表明这一点。查询字符串部分可能用于表示图像的版本,以便缓存不会返回一个与布局不再兼容的图像。不过这只是猜测。


0

问号不是CSS的一部分,它用于请求图像的非缓存版本。


0

就像大家所说的那样,它是URL的一部分。其目的是缓存破坏。当图像发生变化时,参数也会随之改变,因此客户端将获得最新版本。


0
这不是CSS的特性,而是URL的特性;问号表示查询字符串的开始。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接