开发者

Why is Django Caching my static with django.views.static.serve?

开发者 https://www.devze.com 2023-02-15 02:46 出处:网络
I have static.serve setup on my local development server, but it seems to cache static files (in my case, css, javascript and images) until I restart the the server. I am not using apache, and I have

I have static.serve setup on my local development server, but it seems to cache static files (in my case, css, javascript and images) until I restart the the server. I am not using apache, and I have the cache set to:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
    }
}

Removing the caches declaration all together doesn't seem to help either.

This didn't happen before I upgraded to 1.2.5 from an older 1.1 version.

It's a pain to have to restart the dev server every time (either by touching a python file or via the command line) every time I make a style update.

Edit - as suggested, I've added settings.py and url.py

Settings.py

# Django settings for zeiss_elearning project.
from django.utils.translation import ugettext_lazy as _
gettext = lambda s: s

DEBUG = True
TEMPLATE_DEBUG = DEBUG

ADMINS = (
    ('Jason Roy', '###'),
)

#Email settings

EMAIL_HOST = '###'
EMAIL_HOST_USER = 'info@btbcreative.com'
EMAIL_HOST_PASSWORD = '####'
DEFAULT_FROM_EMAIL = 'info@btbcreative.com'
MANAGERS = ADMINS

DATABASES = {
'default': {
    'ENGINE' : 'django.db.backends.mysql',   
    'NAME' : '###',
    'USER' : '###',
    'PASSWORD' : '###',
    'HOST' : '/Applications/MAMP/tmp/mysql/mysql.sock',
}
}

TIME_ZONE = 'America/Tijuana'


LANGUAGE_CODE = 'en-us'

SITE_ID = 1

USE_I18N = True

USE_L10N = True

MEDIA_DEBUG_DOC_ROOT = '/Users/jason/Bird Takes Bear/Projects/Carl Zeiss/site 2.0/media'
MEDIA_ROOT = '/Users/jason/Bird Takes Bear/Projects/Carl Zeiss/site 2.0/media'

MEDIA_URL = '/static_files/'

ADMIN_MEDIA_PREFIX = '/media/admin/'

# Make this unique, and don't share it with anybody.
SECRET_KEY = '####'

# List of callables that know how to import templates from various sources.
TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
#     'django.template.loaders.eggs.Loader',
)

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.cache.UpdateCacheMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.doc.XViewMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'cms.middleware.page.CurrentPageMiddleware', 
    'cms.middleware.user.CurrentUserMiddleware', 
    'cms.middleware.toolbar.ToolbarMiddleware',
    'cms.middleware.media.PlaceholderMediaMiddleware',
    #'django.middleware.cache.FetchFromCacheMiddleware',
    #'debug_toolbar.middleware.DebugToolbarMiddleware',
)

ROOT_URLCONF = 'zeiss_elearning.urls'

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.core.context_processors.auth', 
    'django.core.context_processors.i18n', 
    'django.core.context_processors.request', 
    'django.core.context_processors.media', 
    'cms.context_processors.media',
)

TEMPLATE_DIRS = (,
    '/Users/jason/Bird Takes Bear/Projects/Carl Zeiss/site 2.0/templates',
    '/Users开发者_StackOverflow社区/jason/Bird Takes Bear/Projects/Carl Zeiss/site 2.0/cms/templates',
)

SESSION_COOKIE_AGE = 86400

LOGIN_URL = '/membership/login/'

LOGIN_REDIRECT_URL = "/"

AUTHENTICATION_BACKENDS = ( 
    'zeiss_elearning.shared.email_auth.EmailBackend',
    'django.contrib.auth.backends.ModelBackend',
)
AUTH_PROFILE_MODULE = 'membership.UserProfile'
FORCE_SCRIPT_NAME = ''

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.admin',
    'cms',
    'cms.plugins.text',
    'cms.plugins.picture',
    'cms.plugins.link',
    'cms.plugins.file',
    'cms.plugins.snippet',
    'cms.plugins.googlemap',
    'cms.plugins.zeiss_video',
    'cms.plugins.html',
    'cms.plugins.quiz',
    'cms.plugins.popup',
    'mptt',
    'publisher',
    'zeiss_elearning.forms',
    'zeiss_elearning.membership',
    'zeiss_elearning.quiz',
    'menus',
    'south',
)
INTERNAL_IPS = ('127.0.0.1',)

#CMS Settings


CMS_REDIRECTS = True
CMS_MENU_TITLE_OVERWRITE = True
CMS_DBGETTEXT = False

CMS_DEFAULT_TEMPLATE = 'base.html'
CMS_ALLOW_HTML_TITLES = False

CMS_TEMPLATES = (
    ('base.html', _('Default')),
    ('cirrus.html', _('Cirrus')),
    ('atlas.html', _('Atlas')),
)

# Site title for your template
CMS_SITE_TITLE = 'Zeiss Cirrus'

CMS_LANGUAGE_REDIRECT = False

CMS_LANGUAGES = (
    ('en', gettext('English')),
)
LANGUAGES = (
    ('en', gettext('English')),
)
CMS_APPLICATIONS_URLS = (
('zeiss_elearning.quiz.urls', 'Quiz')
)

urls.py

from django.conf.urls.defaults import *
from django.contrib import admin
from django.conf import settings

admin.autodiscover()

urlpatterns = patterns('',
    (r'^membership/', include('zeiss_elearning.membership.urls')),
    (r'^admin/', include(admin.site.urls)),

)
urlpatterns += patterns('',
    url(r'^', include('cms.urls')),
)
if settings.DEBUG:
    urlpatterns += patterns('',
        (r'^static_files/(?P<path>.*)$', 'django.views.static.serve',
        {'document_root': settings.MEDIA_DEBUG_DOC_ROOT}),)


The bottom line here, based on the data provided, seems to be that your browser is caching the media files. The recommended method to resolve this is super refreshing the pages in your browser. See ALL the comments on your post.

However, If you really do not want the media files to be cached you can simply set them constantly unique names. Like so.

 <link rel="stylesheet" type="text/css" href="/site_media/css/style.css?{% now "U" %}" />

Now every time the page is reloaded the filename will be a little bit different based on the unix timestamp, forcing the browser to reload it all the time.

0

精彩评论

暂无评论...
验证码 换一张
取 消