为什么Django要用Django.views.static.service缓存我的static?

为什么Django要用Django.views.static.service缓存我的static?,django,cache-control,Django,Cache Control,我在本地开发服务器上安装了static.service,但它似乎会缓存静态文件(在我的例子中是css、javascript和图像),直到我重新启动服务器。我没有使用apache,缓存设置为: CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.dummy.DummyCache', } } 同时删除缓存声明似乎也无济于事 这在我从旧的1.1版本升级到1.2.5之前是没有发生过的 每次我进行样

我在本地开发服务器上安装了static.service,但它似乎会缓存静态文件(在我的例子中是css、javascript和图像),直到我重新启动服务器。我没有使用apache,缓存设置为:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
    }
}
同时删除缓存声明似乎也无济于事

这在我从旧的1.1版本升级到1.2.5之前是没有发生过的

每次我进行样式更新时都必须重新启动dev服务器(通过触摸python文件或通过命令行),这是一种痛苦

编辑-根据建议,我添加了settings.py和url.py

设置.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/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')
)
url.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}),)
从django.conf.url.defaults导入*
从django.contrib导入管理
从django.conf导入设置
admin.autodiscover()
urlpatterns=模式(“”,
(r“^membership/”,包括('zeiss_elearning.membership.url'),
(r“^admin/”,包括(admin.site.url)),
)
urlpatterns+=模式(“”,
url(r'^',包括('cms.url'),
)
如果设置为.DEBUG:
urlpatterns+=模式(“”,
(r“^static_files/(?P.*)$”,“django.views.static.service”,
{'document\u root':settings.MEDIA\u DEBUG\u DOC\u root})

根据提供的数据,这里的底线似乎是您的浏览器正在缓存媒体文件。解决此问题的建议方法是超级刷新浏览器中的页面。查看您帖子上的所有评论

但是,如果您确实不希望缓存媒体文件,只需将它们设置为唯一的名称即可。像这样

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


现在,每次重新加载页面时,文件名都会因unix时间戳的不同而略有不同,迫使浏览器一直重新加载该文件。

您确定这些文件没有缓存在浏览器中吗?它是哪个浏览器?我知道在Firefox上,Chrome有时会缓存,而Ctrl-r会用最新版本刷新。您在Web inspector的“网络”选项卡中看到了什么?所以您的浏览器正在请求媒体,而Django正在返回未修改的响应?当您更改介质时,是否正在更新文件上的修改时间?也许您可以共享您的url.py和setings.py(根据需要进行清理),以显示您如何处理静态服务。所谓开发服务器,您是指集成的django开发服务器?而且+1用于添加url.py和settings.py,并尝试使用wget或类似工具打开文件并检查标题。