Page generation time tonen in Django

Bij het bouwen van een django applicatie kan het soms handig zijn om te weten hoe lang het duurde om een pagina te genereren. We kunnen namelijk wel zien hoe lang het duurde om een pagina te laden in de developer tools van onze browser, maar niet hoelang het werkelijk duurde om de pagina te genereren. In Django kunnen we dit oplossen met een stukje middleware

In een bestand (bijvoorbeeld “app/middleware.py” kunnen we het volgende toevoegen:

import time
class StatsMiddleware(object):
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        # Code to be executed for each request before
        # the view (and later middleware) are called.
        request.start_time = time.time()

        response = self.get_response(request)

        # Code to be executed for each request/response after
        # the view is called.
        duration = time.time() - request.start_time
        response["X-Page-Generation-Duration"] = str(round(duration,3))+"s"
        return response

Vervolgens kunnen we de middleware laden. Het is belangrijk dat deze middleware als eerste in de MIDDLEWARE configuratie instelling.

Deze middleware zal een header “X-Page-Generation-Duration” toevoegen met de tijd die het duurde om de pagina te genereren.