I am asking very generic question and the answer can vary from requirement to requirement, but for "general" or "rule of thumb", can we say the following is a good design rule:
The classes to be cached (static/reference data) should be designed as immutable, with exceptions reasoned.
What could be design/performance issues with the above statement, if this is not true?