※ 引述《sean72 (.)》之铭言:
: 1
: 我修改static file之后 ex map.js
: 甚至我从static_root移除了map.js
: 浏览器却还是显示之前的map资讯
: 请问是谁(django dev server or web browser?) cach了这些static files?
如果您的 STATIC_ROOT 和 STATIC_URL 路径不同,那您删 STATIC_ROOT 里的档案
大概不太会有影响。您可以用 Chrome 的 Dev Tools 里的 Network 标签,找到
map.js 那个 request 然后看一下 Size 这个字段,如果是从 cache 他会说。
: 2
: 每次修改static file之后都还要执行collectstatic
: 之后再跑runserver 这样实在很麻烦
: 请问大家都是如何做static file修改?
collectstatic 在 deploy 之前才用。在那之前,static files 都在 app 里面的
static 资料夹,STATIC_URL 设成 '/static/',这样您档案马上改就马上用。
等到您的扣要推上线之前,跑 collectstatic ,然后从 STATIC_ROOT 把档案移到
您最喜爱的 CDN (例如 AWS CloudFront),然后改 STATIC_URL,把他指到您的 CDN,
这样应该就妥当了。对了,第三题记得要用{% static '....' %}。
: 3
: 即使我使用了{% load staticfiles %}
: 我是否仍然可以使用
: <link rel="icon" href="../../map.js"> 这种方法来读取static files?
请唯一使用 href="{% static 'xxx/yyy/map.js' %}"
Django 提供了这个让您可以不用 hard code 任何路径的机制,您就应该用它。
: 4
: collectstatic 这个app好用的地方在哪?
: 我看了这篇却没有感觉 http://0rz.tw/B8AWT
: 无论我有多少个app 我仍然要在每个html head里面标明static file的位置
: <script src="{% static 'js/map.js' %}"></script>
: 那跟我直接连去static file dir也是一样的意思 不是吗?
不是。前面都讲完了,这里简短回答。