diff --git a/config.json b/config.json
index ed8458c8e8397ed9b742284db3e559288d08f8fa..e04452f71ea89698547493df0b6c8d72a87b9f06 100644
--- a/config.json
+++ b/config.json
@@ -3,5 +3,6 @@
 	"bind_password": "thisisthebindpassword",
 	"api_baseurl": "http://localhost:5000/api/v1",
 	"api_key": "secretapikey",
-	"listen_addr": "127.0.0.1:3389"
+	"listen_addr": "127.0.0.1:3389",
+	"cache_ttl": 60
 }
diff --git a/requirements.txt b/requirements.txt
index 0091a34a7af56770bf5967c406be0d9d3a3e36f2..b636ab0156383ac8a5b81f7180d803d0e6b9849e 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,2 +1,4 @@
 --extra-index-url https://git.cccv.de/api/v4/projects/220/packages/pypi/simple
 ldapserver==0.0.1.dev3
+
+CacheControl
diff --git a/server.py b/server.py
index 6a53bf5ce3d8107437c28338dc4a5283da409251..99257bc06eecda314615f2049ca6cfde8b362820 100644
--- a/server.py
+++ b/server.py
@@ -2,6 +2,8 @@ import sys
 import json
 import socketserver
 import requests
+from cachecontrol import CacheControl
+from cachecontrol.heuristics import ExpiresAfter
 
 from ldapserver import SimpleLDAPRequestHandler
 from ldapserver.dn import DN, RDN
@@ -12,10 +14,10 @@ from ldapserver.exceptions import LDAPInvalidCredentials
 from ldapserver.schema import RFC2307BIS_SUBSCHEMA
 
 class UffdAPI:
-	def __init__(self, baseurl, key):
+	def __init__(self, baseurl, key, cache_ttl=60):
 		self.baseurl = baseurl
 		self.key = key
-		self.session = requests.Session()
+		self.session = CacheControl(requests.Session(), heuristic=ExpiresAfter(seconds=cache_ttl))
 		self.session.headers['Authorization'] = 'Bearer '+self.key
 
 	def get(self, endpoint, **kwargs):
@@ -191,7 +193,7 @@ class RequestHandler(SimpleLDAPRequestHandler):
 
 def main(config):
 	dn_base = DN(config['dn_base'])
-	api = UffdAPI(config['api_baseurl'], config['api_key'])
+	api = UffdAPI(config['api_baseurl'], config['api_key'], config.get('cache_ttl', 60))
 	user_directory = UserDirectory(api, dn_base)
 	group_directory = GroupDirectory(api, dn_base)