什么是 icon-theme.cache?

10 themes icons cache

当我在 Lubuntu 12.10 上运行以下命令时

[11:09 PM] ~ $ find /usr/share/icons/ -iname icon-theme.cache -type f
Run Code Online (Sandbox Code Playgroud)

我得到以下信息(添加上次修改日期和大小后):

/usr/share/icons/lubuntu/icon-theme.cache              20121125  61.2 KiB
/usr/share/icons/Humanity-Dark/icon-theme.cache        20120810  40.6 KiB
/usr/share/icons/Humanity/icon-theme.cache             20120810 931.9 KiB
/usr/share/icons/gnome/icon-theme.cache                20121017  65.8 MiB
/usr/share/icons/ubuntu-mono-light/icon-theme.cache    20130408 140.0 KiB
/usr/share/icons/LoginIcons/icon-theme.cache           20130408   628 bytes
/usr/share/icons/ubuntu-mono-dark/icon-theme.cache     20130408 139.9 KiB
/usr/share/icons/hicolor/icon-theme.cache              20130406  12.4 MiB
/usr/share/icons/elementary-mono-dark/icon-theme.cache 20120926  12.4 KiB
Run Code Online (Sandbox Code Playgroud)

如下例所示,所有这些文件的类型为TrueType font data

[11:09 PM] ~ $ file /usr/share/icons/hicolor/icon-theme.cache
/usr/share/icons/hicolor/icon-theme.cache: TrueType font data
Run Code Online (Sandbox Code Playgroud)

我的问题都是密切相关的:

  • 它是什么icon-theme.cache以及它的功能是什么?cache这些文件名中的含义是什么?该高速缓存标签的定义是这样的:“一个高速缓存存储临时数据附近,这样可以比从实际后备存储(磁盘,网络)获取它,或再次遍布重新计算了一些成绩更快速地检索”。
  • 为什么文件大小如此多样化?是gnomehicolor那些最大的,因为他们提供的回退图标(如我在其他地方见过)?
  • 日期呢?我只确定ubuntu-mono那些是因为它们是我light-themes在 20130408 上安装时出现的。那么这些文件是在切换主题的过程中被修改的,还是日期只是安装日期的反映?

gre*_*een 12

要了解我们为什么需要这些文件,首先需要了解将文件映射到内存的概念。

内存映射文件: 内存映射文件是虚拟内存段,直接逐字节映射到磁盘上的物理文件。与传统的基于流的 I/O 相比,它具有许多优点,例如在随机访问大文件期间的性能,或者在不同线程和进程之间共享映射内存的能力。

由于两个原因,访问内存映射文件比使用直接读写操作更快。首先,系统调用比对程序本地内存的简单更改慢几个数量级。其次,在大多数操作系统中,映射的内存区域实际上是内核的页面缓存(文件缓存),这意味着不需要在用户空间创建副本。

现在,一一回答你的问题:

  1. 什么是 icon-theme.cache,它的功能是什么?这些文件名中的缓存是什么意思?

文件icon-theme.cache包含有关某个目录(恰好是包含index.theme特定主题的目录)下的目录树中图标的缓存信息。

GTK+ 可以使用缓存文件来避免应用程序启动时的大量系统调用和磁盘搜索开销。由于缓存文件的格式允许它们在多个应用程序之间共享内存映射,因此整体内存消耗也减少了。

  1. 为什么文件大小如此多样化?

文件大小取决于图标主题中的图标数量。

  1. 日期呢?

如果我们使用内存缓存,那么只有当某个进程访问特定内存位置并保持在该位置时,缓存中才会存在某些内容,除非缓存已满并且需要删除该元素。

因此,修改日期很可能取决于某个进程何时更新它。在这种情况下,可能是使用了主题中的图标。

实际上,有一个命令可以更新名为 的图标缓存gtk-update-icon-cache

来源和更多信息: