Streamlit Caching in Production: Choosing Between cache_data and cache_resource
Streamlit 1.18 split caching into st.cache_data (serializable returns) and st.cache_resource (singleton objects). Covers when to use each, TTL/LRU eviction, widget pitfalls, mutation risks, and distributed deployment patterns with a semantic search example.