[Share Experiences] 【小知识】缓存和临时文件
Tofloor
poster avatar
enforcee
deepin
2021-03-25 08:59
Author

缓存(cache),最早是硬件概念,全称缓冲存储器。台湾的翻译是“快取”。这两种翻译虽然看似截然相反,但是各有各的道理。大陆的翻译体现了缓存和存储器的联系(尤其是内存,即内存储器或称主存储器),台湾的翻译在意译的同时也贴合了原文读音。早期内存的速度很慢,为了加快CPU对内存的读取速度,将内存的部分内容存放在一个更快的存储器上,称为cache。随着技术发展,类似的设计出现在更多地方,比如为了加快硬盘(外存储器、辅助存储器)和内存之间的读写,“磁盘缓存”。软件层面,和网络、3D等相关的临时文件也被称为缓存。

临时文件(temporary file,简作temp),是程序运行中产生的文件,程序运行结果的副产品。

缓存和临时文件是两个难以分清的概念(也是清垃圾爱好者们痛恨的两个概念)。不算硬件上的缓存,软件层面的缓存可以看作临时文件,临时文件的概念比缓存更广泛一些。可以这么理解缓存和临时文件的区别:最好应该在内存中,但是因为内存容量有限才放到硬盘里用来代替内存读取的,叫缓存或临时文件都可以(网络缓存是硬盘代替网络读取);而和内存没有关系的,因为某些原因需要在硬盘上保存数据,比如在压缩包里查看一个文件,软件就会把这个文件先解压到某个地方,再把这个文件打开,等文件关闭后软件再把这个文件删掉;或者是一些软件为了防止断电或者崩溃进行的自动保存——由于不涉及两个设备的交换,这样的文件应该叫临时文件不叫缓存。但是在实际使用时,各种缓存、临时文件通常保存到同一位置,没有必要区分

在linux文件结构中,存放临时文件的目录是:/tmp/  (https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch03s18.html)
这个文件夹不需要自己手动清理,每次重启或一段时间都会自动清空(systemd-tmpfiles-clean服务)。

另一个存放临时文件的目录是:/var/tmp/ (https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch05s15.html)
由于一些程序运行时总会需要临时文件,即便删除,下次运行这个程序时依旧会产生他们。为了节省重复制造这些文件的时间和性能损失,这些文件最好一直保持在硬盘上。因此这些文件不会自动删除,如果确定哪些文件是不需要的,可以手动清除他。

用户自己的临时文件目录由$XDG_CACHE_HOME环境变量决定。通常是~/.cache/ (https://specifications.freedesktop.org/basedir-spec/latest/ar01s03.html)
这个和上面的/var/tmp/很相似,一般图形应用的临时文件在这里。如果确定哪些文件不需要了,可以手动删除(尤其是很多时候卸载软件后这里都会残余一些临时文件)。

Reply Favorite View the author
All Replies
剥壳白煮蛋
deepin
2021-03-25 19:20
#1

好帖顶一下

Reply View the author