From fe1a1eb79bf0f1df8bbc56d2402e32061af79d06 Mon Sep 17 00:00:00 2001 From: Sebastian Silva Date: Wed, 12 Oct 2011 00:54:31 +0000 Subject: Tidy up code a bit - added documentation --- (limited to 'studio/static/doc/flask-docs/patterns/caching.html') diff --git a/studio/static/doc/flask-docs/patterns/caching.html b/studio/static/doc/flask-docs/patterns/caching.html new file mode 100644 index 0000000..ed0d3c1 --- /dev/null +++ b/studio/static/doc/flask-docs/patterns/caching.html @@ -0,0 +1,178 @@ + + + + + + + + + Caching — Flask 0.8 documentation + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

Caching

+

When your application runs slow, throw some caches in. Well, at least +it’s the easiest way to speed up things. What does a cache do? Say you +have a function that takes some time to complete but the results would +still be good enough if they were 5 minutes old. So then the idea is that +you actually put the result of that calculation into a cache for some +time.

+

Flask itself does not provide caching for you, but Werkzeug, one of the +libraries it is based on, has some very basic cache support. It supports +multiple cache backends, normally you want to use a memcached server.

+
+

Setting up a Cache

+

You create a cache object once and keep it around, similar to how +Flask objects are created. If you are using the +development server you can create a +SimpleCache object, that one is a simple +cache that keeps the item stored in the memory of the Python interpreter:

+
from werkzeug.contrib.cache import SimpleCache
+cache = SimpleCache()
+
+
+

If you want to use memcached, make sure to have one of the memcache modules +supported (you get them from PyPI) and a +memcached server running somewhere. This is how you connect to such an +memcached server then:

+
from werkzeug.contrib.cache import MemcachedCache
+cache = MemcachedCache(['127.0.0.1:11211'])
+
+
+

If you are using App Engine, you can connect to the App Engine memcache +server easily:

+
from werkzeug.contrib.cache import GAEMemcachedCache
+cache = GAEMemcachedCache()
+
+
+
+
+

Using a Cache

+

Now how can one use such a cache? There are two very important +operations: get() and +set(). This is how to use them:

+

To get an item from the cache call +get() with a string as key name. +If something is in the cache, it is returned. Otherwise that function +will return None:

+
rv = cache.get('my-item')
+
+
+

To add items to the cache, use the set() +method instead. The first argument is the key and the second the value +that should be set. Also a timeout can be provided after which the cache +will automatically remove item.

+

Here a full example how this looks like normally:

+
def get_my_item():
+    rv = cache.get('my-item')
+    if rv is None:
+        rv = calculate_value()
+        cache.set('my-item', rv, timeout=5 * 60)
+    return rv
+
+
+
+
+ + +
+
+
+
+
+

Table Of Contents

+ +

Related Topics

+ +

This Page

+ + + +
+
+
+
+ + + \ No newline at end of file -- cgit v0.9.1