不管框架是什么,或者你是否使用框架,最好有一个地方来保存你的静态文件(这将是你所有的 twitter 引导内容)。
为了清楚起见,我个人将我的分成img
, css
, js
, fonts
。像这样:
MyProject/
|-- Python/
| |-- bin
| | |-- app.py
| |-- docs
| |-- sessions
| |-- tests
| | |-- project_tests.py
|
|-- static/
| |-- css/
| | |-- bootstrap.css
| | |-- bootstrap.min.css
| | |-- my_custom_styles.css
| |-- js/
| | |-- bootstrap.js
| | |-- bootstrap.min.js
| |-- img/
| | |-- glyphicon-halflings.png
| | |-- glyphicon-halflings.png
| |-- fonts/
| | |-- cool_font
这样做的好处是,当您使用 Web 服务器来提供静态内容时,您可以/static/
在模板中使用并将其指向/static/
文件系统上的文件夹。Nginx 示例:
location ~ ^/static/ {
alias /path/to/static/;
expires 30d;
}
所以www.yoururl.com/static/img/glyphicon-halflings.png
很容易从您的文件系统中找到和提供服务。
作为额外的奖励,如果您正在使用 Python 进行 Web 开发,那么有一些很棒的框架可以帮助您了解很多基础知识。他们还有大量关于在开发和生产部署中处理静态文件的文档。
我用过:
但也有:
还有更多!
Edit1 - 额外奖励信息:
我说我会加一点。以下是我管理静态文件的方式:
当我使用 Django 时,我使用django-compressor,它会自动组合并最小化模板中的内联 CSS 和 JS。它还添加了一个唯一的标识哈希,因此您可以在未来几年设置缓存标头,以节省带宽并减少加载时间。如果您更改静态文件,它会自动修改哈希 - 它们会被浏览器重新下载。
如果我使用 Flask(或非 django),我会使用 Grunt。虽然不是真正用于 Python 开发,但它很容易连接到持续集成系统(如 Jenkins)中,并且还可以为您组合、连接和压缩您的 CSS 和 JS。尽管如此,仍然没有解决唯一的哈希。
这些新的压缩文件,我放到了一个新目录—— static-min
. 然后我有一个 bash 脚本,它循环遍历我static-min
目录中的所有文件并 gzip 压缩它们(使用 10 - 最大 gzip 压缩)但保持它们的名称相同。这样一来,如果支持的浏览器请求您的站点 - Nginx 将提供压缩的静态文件。
像这样:
|-- static-min/
| |-- css/
| | |-- all_css_concatenated_minimised-723974hgjsf.css
| | |-- all_css_concatenated_minimised-723974hgjsf.css.gz
| |-- js/
| | |-- all_js_concatenated_minimised-djad7rhea8f.js
| | |-- all_js_concatenated_minimised-djad7rhea8f.js.gz
Nginx 配置 -expires max
将让用户将文件永久保存在浏览器缓存中:
location ~ ^/static-min/ {
alias /path/to/static-min/;
expires max;
}