A buffer is something that have yet to being "written" to disk.
A cache is something that have been "read" from the disk and stored for later use.
Caching (cache) is to save the read data, re-read if hit (find the required data) do not read the hard disk, if not hit the hard drive. The data will be organized according to the frequency of reading, the most frequently read content in the most easily found in the location, the content is no longer read to the back row, until removed from it.
Buffering (buffer) is based on the read and write design of the disk, the decentralized write operations centralized, reduce disk fragmentation and the hard disk repeatedly seek, thereby improving system performance.
Cache is designed to increase the speed of data exchange between memory and hard disk (or other i/0 devices).
Buffering (buffer) is designed to increase the speed of data exchange between the CPU and memory, which is the usual first-level cache, level two cache, and level three cache.
The meaning of-/+ Buffers/cache in free-m:
-buffers/cache:used-buffers-cached
+buffers/cache:free + buffers + Cached
-buffers/cache reflects the memory that the program is actually occupying, while +buffers/cache reflects the total amount of memory that can be used.
Buffer and Cache in Linux