Cache vs. Tempfiles

Hello, I have used both cache's and tempfiles in my protocols. I started using cache's because it seemed easier to just type in a number. However, with tempfiles in the join you are able to keep properties, with cache you cannot.
I would like to discuss the pros and cons of using each, in which scenarios is it better to use tempfiles instead of cache and vice versa?

Thanks!