***
The terms, **buffer** and **cache**, tend to be used interchangeably. Note, however, that they represent different things. Traditionally, a buffer is used as an intermediate temporary store for data between a fast and a slow entity. As one party would have to wait for the other (which affects performance), the buffer alleviates this by allowing entire blocks of data to move at once rather than in small chunks. The data is written and read only once from the buffer. Furthermore, the buffers are visible to at least one party that is aware of it.
A cache, on the other hand, is, by definition, hidden, and neither party is aware that caching occurs. It also improves performance, but does so by letting the same data be read multiple times in a fast fashion.
You can find a further explanation of the differences between a buffer and a cache [here](https://en.wikipedia.org/wiki/Cache_(computing)#The_difference_between_buffer_and_cache).
***
**References**:
- [Spring Framework Documentation | Cache](https://docs.spring.io/spring-framework/docs/current/reference/html/integration.html#cache)