【问题标题】:Questions regarding CSS spritesheet (and somewhat about caching)关于 CSS spritesheet 的问题(以及一些关于缓存的问题)
【发布时间】:2011-07-29 09:02:59
【问题描述】:

1) 首先,我应该以某种方式对我的 spritesheet 中的图像进行排序吗?(比如从最大到最小的图像,或者从页面顶部到页面底部出现的图像?)

2) 假设我有一个包含前后图像的 css spritesheet。就像图像显示一头牛一样,但是当图像悬停时,它显示的是一头带翅膀的牛。那么不使用css spritesheet是否符合我的最大利益? css 会一次加载我的 spritesheet 中的所有图片吗?

3) spritesheet 在缓存方面是否更好?不相关,但是浏览器缓存某些内容需要什么?我的意思是,如果它只是在单页浏览之后,也许不值得。

4) 最后,我想创建一个论坛。我对论坛一无所知,但我计划很快开始。我正在考虑拥有一组默认的 40 张图像,人们只能从中选择作为他们的头像。我是否应该为这些图像制作一个精灵表(如果可能的话)?

我知道这是很多问题,所以请回答您所知道的任何问题。谢谢!

【问题讨论】:

  • @zneak:不,他没有。 @user657847:如果您有独立的问题(如情况),您应该将它们分成不同的线程。 (好问题,顺便说一句。)
  • 这是我不久前写的一篇相关的博文,应该可以帮助你进行精灵:blog.mozilla.com/webdev/2009/03/27/css-spriting-tips
  • 这是一些好东西。谢谢!

标签: css image caching sprite css-sprites


【解决方案1】:

1) 不确定,但我认为这并不重要,如果有的话。

2) 最好的方法是使用 CSS 图像翻转。

3) Spritesheets 更适合缓存,因为它只是一个图像,而不是 Web 服务器必须连接、发送图像、断开连接、再次发送、发送另一个图像、断开连接等......

4) 我只会使用单个图像。在这种情况下,真的没有理由使用 spritesheet。

【讨论】:

  • #2:如果图像尚未被请求,CSS :hover background-image 变化会非常非常慢,如果不使用精灵的话。
【解决方案2】:

“spritesheet”只是一张大图。所以...

1) 没关系。

2) 同样,它只是一张图片。如果不是所有用户都想要激活“之后”功能,那么你可以为他们节省一些带宽,让他们成为一个单独的精灵。如果大多数人都想使用 after 功能,那么您可以通过将其全部设为一个 sprite 来节省他们的带宽。 (但请注意,如果我们谈论的是非常大的图像,那么您想要在一个精灵中粘贴多少会有实际限制。例如,没有人会等待下载 1mb 文件)。

3) 同样,精灵只是一个图像。它与任何图像具有相同的缓存优点/缺点。

4) 与 1 个精灵相比,服务器上的 40 次点击是很多的。因此,仅基于此,精灵将是有用的。但是,如果您很少会在一页上获得超过 10 个左右的这些头像,那么精灵将是不利的,因为它正在加载如此大的文件。

【讨论】:

  • 好东西。有没有一种方法可以让我在他注册到论坛之前对其进行筛选?比如强迫他以某种方式缓存图像作为注册过程的一部分?
  • 您不能强制浏览器缓存。你可以要求它。你用服务器做到这一点。示例:askapache.com/htaccess/…
  • 是的,我已经有了缓存模组。但它真的有效吗?所以我能做的最多就是在注册屏幕旁边有40张图片的精灵表吗?是否有任何迹象表明浏览器是否会选择它?
  • @DA:第一次使用 spritesheet 图像时,浏览器应该缓存它,并在后续请求中使用该版本(假设您已经输入了必要的 HTTP 缓存命令,而用户没有t 清除缓存或强制真正刷新)。因此,您可以将其包含在注册屏幕上。使用图像创建 JavaScript 图像对象,即使它没有显示在页面上,也会导致浏览器缓存图像文件。
  • @Paul:“应该”是那里的关键词。这仍然取决于浏览器。也就是说,不确定将其放在注册页面上会获得多少。无论它在哪个页面上,都必须加载图像。还不如等待在需要它的页面上调用该图像。
【解决方案3】:

就图像的排序而言,我有一个我正在开发的网站的 sprite 文件,其中包含各种浏览器徽标,并添加了版本号。因此,文件中的视觉信息有很多重复。

我很惊讶地发现,当保存为 PNG 时,重复的方向可能对我可以为图像实现的文件大小产生很大影响。当我在列中有类似的徽标时,文件大约 120 KB;而当我将它们排列成行时,它的大小为 41 KB。

项目上线后,我将发布实际图片。在 sprite 文件中重复出现如此相似的图像可能非常罕见;通常您的图像会有所不同,或者您只是重复使用相同的图像。 (实际上,我最终可能会重构我的精灵,以便不同的位在它们自己的文件中。)但我没有意识到,这些所谓的相似图像可以编码在两个大小不同的文件中,纯粹基于几何排列图像文件中的元素。

【讨论】:

  • 相当整洁,所以故事的寓意是把你的图片排列成一大排?
  • @user657847:不确定——我的精灵图像基本上是一堆重复的标志。如果没有重复,我认为这不会有任何不同。我认为如果你的精灵图像变得非常大,可以尝试一些变化。
猜你喜欢
  • 2011-06-26
  • 2011-07-23
  • 1970-01-01
  • 2018-05-24
  • 2013-07-07
  • 2013-05-10
  • 2012-03-18
  • 2023-03-09
  • 2021-07-01
相关资源
最近更新 更多