Commit cc7b0f98 authored by Adrian Holovaty's avatar Adrian Holovaty
Browse files

Fixed #8409 -- The runserver now uses conditional GET for admin media files,...

Fixed #8409 -- The runserver now uses conditional GET for admin media files, instead of reloading the files off disk for every request. Thanks for reporting, andylowry

git-svn-id: http://code.djangoproject.com/svn/django/trunk@9055 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent 7a80a9fa
Loading
Loading
Loading
Loading
+18 −7
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@ from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
import mimetypes
import os
import re
import stat
import sys
import urllib

@@ -647,9 +648,19 @@ class AdminMediaHandler(object):
                status = '401 UNAUTHORIZED'
                headers = {'Content-type': 'text/plain'}
                output = ['Permission denied: %s' % file_path]
            else:
                # This is a very simple implementation of conditional GET with
                # the Last-Modified header. It makes media files a bit speedier
                # because the files are only read off disk for the first
                # request (assuming the browser/client supports conditional
                # GET).
                mtime = http_date(os.stat(file_path)[stat.ST_MTIME])
                headers = {'Last-Modified': mtime}
                if environ.get('HTTP_IF_MODIFIED_SINCE', None) == mtime:
                    status = '304 NOT MODIFIED'
                    output = []
                else:
                    status = '200 OK'
                headers = {}
                    mime_type = mimetypes.guess_type(file_path)[0]
                    if mime_type:
                        headers['Content-Type'] = mime_type