Spaces:
Sleeping
Sleeping
File size: 3,876 Bytes
746d2f1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 |
---
title: Caching and state
slug: /develop/api-reference/caching-and-state
---
# Caching and state
Optimize performance and add statefulness to your app!
## Caching
Streamlit provides powerful [cache primitives](/develop/concepts/architecture/caching) 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.
<TileContainer>
<RefCard href="/develop/api-reference/caching-and-state/st.cache_data" size="half">
<h4>Cache data</h4>
Function decorator to cache functions that return data (e.g. dataframe transforms, database queries, ML inference).
```python
@st.cache_data
def long_function(param1, param2):
# Perform expensive computation here or
# fetch data from the web here
return data
```
</RefCard>
<RefCard href="/develop/api-reference/caching-and-state/st.cache_resource" size="half">
<h4>Cache resource</h4>
Function decorator to cache functions that return global resources (e.g. database connections, ML models).
```python
@st.cache_resource
def init_model():
# Return a global resource here
return pipeline(
"sentiment-analysis",
model="distilbert-base-uncased-finetuned-sst-2-english"
)
```
</RefCard>
</TileContainer>
## Manage state
Streamlit re-executes your script with each user interaction. Widgets have built-in statefulness between reruns, but Session State lets you do more!
<TileContainer>
<RefCard href="/develop/api-reference/caching-and-state/st.session_state" size="half" >
<h4>Session State</h4>
Save data between reruns and across pages.
```python
st.session_state["foo"] = "bar"
```
</RefCard>
<RefCard href="/develop/api-reference/caching-and-state/st.query_params" size="half">
<h4>Query parameters</h4>
Get, set, or clear the query parameters that are shown in the browser's URL bar.
```python
st.query_params[key] = value
st.query_params.clear()
```
</RefCard>
</TileContainer>
## Deprecated commands
<TileContainer>
<RefCard href="/develop/api-reference/caching-and-state/st.cache" deprecated={true}>
> This command was deprecated in version 1.18.0. Use `st.cache_data` or `st.cache_resource` instead.
<h4>Caching</h4>
Function decorator to memoize function executions.
```python
@st.cache(ttl=3600)
def run_long_computation(arg1, arg2):
# Do stuff here
return computation_output
```
</RefCard>
<RefCard href="/develop/api-reference/caching-and-state/st.experimental_memo" deprecated={true}>
> This command was deprecated in version 1.18.0. Use `st.cache_data` instead.
<h4>Memo</h4>
Experimental function decorator to memoize function executions.
```python
@st.experimental_memo
def fetch_and_clean_data(url):
# Fetch data from URL here, and then clean it up.
return data
```
</RefCard>
<RefCard href="/develop/api-reference/caching-and-state/st.experimental_singleton" deprecated={true}>
> This command was deprecated in version 1.18.0. Use `st.cache_resource` instead.
<h4>Singleton</h4>
Experimental function decorator to store singleton objects.
```python
@st.experimental_singleton
def get_database_session(url):
# Create a database session object that points to the URL.
return session
```
</RefCard>
<RefCard href="/develop/api-reference/caching-and-state/st.experimental_get_query_params" size="half" deprecated={true}>
<h4>Get query parameters</h4>
Get query parameters that are shown in the browser's URL bar.
```python
param_dict = st.experimental_get_query_params()
```
</RefCard>
<RefCard href="/develop/api-reference/caching-and-state/st.experimental_set_query_params" size="half" deprecated={true}>
<h4>Set query parameters</h4>
Set query parameters that are shown in the browser's URL bar.
```python
st.experimental_set_query_params(
{"show_all"=True, "selected"=["asia", "america"]}
)
```
</RefCard>
</TileContainer>
|