| | 216 | Caching the current ``Site`` object |
| | 217 | =================================== |
| | 218 | |
| | 219 | **New in Django development version** |
| | 220 | |
| | 221 | As the current site is stored in the database, each call to |
| | 222 | ``Site.objects.get_current()`` could result in a database query. But Django is a |
| | 223 | little cleverer than that: on the first request, the current site is cached, and |
| | 224 | any subsequent call returns the cached data instead of hitting the database. |
| | 225 | |
| | 226 | If for any reason you want to force a database query, you can tell Django to |
| | 227 | clear the cache using ``Site.objects.clear_cache()``:: |
| | 228 | |
| | 229 | # First call; current site fetched from database. |
| | 230 | current_site = Site.objects.get_current() |
| | 231 | # ... |
| | 232 | |
| | 233 | # Second call; current site fetched from cache. |
| | 234 | current_site = Site.objects.get_current() |
| | 235 | # ... |
| | 236 | |
| | 237 | # Force a database query for the third call. |
| | 238 | Site.objects.clear_cache() |
| | 239 | current_site = Site.objects.get_current() |
| | 240 | |