Optimize performance

Streamlit provides powerful cache primitives for data and global resources. They allow your app to stay performant even when loading data from the web, manipulating large datasets, or performing expensive computations.

Cache data

Function decorator to cache functions that return data (e.g. dataframe transforms, database queries, ML inference).

@st.cache_data def long_function(param1, param2): # Perform expensive computation here or # fetch data from the web here return data

Cache resource

Function decorator to cache functions that return global resources (e.g. database connections, ML models).

@st.cache_resource def init_model(): # Return a global resource here return pipeline( "sentiment-analysis", model="distilbert-base-uncased-finetuned-sst-2-english" )
priority_high

Important

All the below commands were deprecated in version 1.18.0. Use the new commands above instead. Learn more in Caching.

delete

This command was deprecated in version 1.18.0. Use st.cache_data or st.cache_resource instead.

Caching

Function decorator to memoize function executions.

@st.cache(ttl=3600) def run_long_computation(arg1, arg2): # Do stuff here return computation_output
delete

This command was deprecated in version 1.18.0. Use st.cache_data instead.

Memo

Experimental function decorator to memoize function executions.

@st.experimental_memo def fetch_and_clean_data(url): # Fetch data from URL here, and then clean it up. return data
delete

This command was deprecated in version 1.18.0. Use st.cache_resource instead.

Singleton

Experimental function decorator to store singleton objects.

@st.experimental_singleton def get_database_session(url): # Create a database session object that points to the URL. return session
delete

This command was deprecated in version 1.18.0. Use st.cache_data.clear instead.

Clear memo

Clear all in-memory and on-disk memo caches.

@st.experimental_memo def fetch_and_clean_data(url): # Fetch data from URL here, and then clean it up. return data if st.checkbox("Clear All"): # Clear values from *all* memoized functions st.experimental_memo.clear()
delete

This command was deprecated in version 1.18.0. Use st.cache_resource.clearinstead.

Clear singleton

Clear all singleton caches.

@st.experimental_singleton def get_database_session(url): # Create a database session object that points to the URL. return session if st.button("Clear All"): # Clears all singleton caches: st.experimental_singleton.clear()
forum

Still have questions?

Our forums are full of helpful information and Streamlit experts.

Was this page helpful?

editEdit this page on GitHub