当我运行python manage.py collectstatic
时,它会使用文件名中的哈希值复制每个图像,JavaScript和CSS文件:
Post-processed 'css/theme.css' as 'css/theme.afeb1fc222a9.css'
Post-processed 'css/custom.css' as 'css/custom.585e1b29ff9a.css'
...
我假设这只是一种制作版本化文件名以获得更好缓存的方法;可以告诉客户端或CDN无限期地缓存此文件,因为如果我进行更改,则哈希值会有所不同,我只会用新名称引用新版本。
但是,我不清楚我应该如何引用此网址。关于提供静态文件的The documentation只是说,
在模板中,要么像
/static/my_app/example.jpg
那样对网址进行硬编码,要么最好使用static
模板标记,通过使用配置的STATICFILES_STORAGE
存储来构建给定相对路径的网址(当您想要切换到用于提供静态文件的内容传送网络(CDN)时,这会更容易。
我浏览了我的模板并尽职地将每个静态资源(包括CSS文件)从硬编码的URL切换到{% static "..." %}
模板标记,假设它将在适当的位置映射到版本化文件名。但它没有。
我还使用WhiteNoise来提供资源,而且我不完全确定它会如何影响事情,但它也说,
想要永久可缓存的文件和压缩支持吗?只需将其添加到
即可settings.py
:STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
但我在我的设置文件中有这个,但它似乎也没有对这些版本化的文件名做任何事情。
答案 0 :(得分:1)
如果DEBUG
为True
,那么静态网址将为'css/theme.css'
而不是'css/theme.afeb1fc222a9.css'
sliderTextInput