Docker's habit of saving the result of each Dockerfile step so it can reuse it on the next build instead of redoing the work. When a step's inputs change, the cache for that step and everything after it is thrown out and rebuilt.