在Django中有没有办法在静态资源末尾添加etag?

1 投票
2 回答
573 浏览
提问于 2025-04-15 17:37

在Rails框架中,如果我导入一个CSS文件或者JavaScript文件,生成的链接会像这样:

<script type="text/javascript" src="some.js?<ETag here>"></script>

如果我更新了some.js文件,etag(一个标识文件版本的东西)就会改变,这样我的浏览器就能聪明地缓存这个静态资源,并在需要的时候更新缓存。

那在Django中有没有类似的方法呢?

2 个回答

0

除了The MYYN提到的django-static,这些项目也能满足你的需求,并且还包含一些非常实用的功能,比如压缩和合并:

django-compress

django_compressor

1

也许 django-static 可以帮到你……

django_static 是一个 Django 应用,它提供了各种模板标签,以更好地服务你的静态内容。简单来说,它会重写静态文件的引用,并在适当的情况下对内容进行空格优化。

通过让静态内容的引用变得独特(在名称中包含时间戳),你可以非常大胆地设置缓存控制,而不用担心升级代码后,访客还在使用旧版本。

正如 <jldupont> 指出的,这个解决方案与 HTTP ETags 没有关系。

撰写回答