| 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 | |