django - 姜戈 | 为什么要使用 {% load static %} 并使模板编译器工作得更多?
问题描述
对于图像/CSS/Js 等静态资源,我可以直接使用它们的路径
<link rel="stylesheet" href="/static/css/default.min.css">
#in app level templates:
<link rel="stylesheet" href="/static/myapp/css/app.min.css">
为什么要在模板中添加混乱:
{% load static %}
<link rel="stylesheet" href="{% static 'css/default.min.css' %}" />
除非您在 url 末尾动态添加部分路径或版本。我怀疑带有 {% load static %} 的模板性能会降低(可能可以忽略,但为什么?)
请赐教,我认为可能有一个强有力的理由。
解决方案
好吧,当您说除非您动态添加路径的一部分时,您有点回答了您自己的问题,这正是您正在做的事情。还有一个强有力的理由。
“静态”是您的 STATIC_URL。忘记 static_root,它是您“收集静态”然后将其移动到生产位置的地方。
我在某个地方部署了一个 Saas django 门户,在生产中我的 STATIC_URL (是的,“静态”变为以下内容:
https://some-cdn-somewhere.com/me-static-assets/static/在以某种方式将收集的文件移动到它之后,我让一些高性能 CDN 提供静态资产。
强调一下,我这样做是为了提高性能,您可能会决定使用像 nginx 这样的 Web 服务器来提供静态资产,它们毕竟是静态的,而 nginx 非常适合这种情况。通常,您配置静态 url 并让 nginx 从文件夹 (STATIC_ROOT) 提供该静态 url,并代理其他 url 说 gunicorn。
考虑编写良好的 django 文档以获取更多信息https://docs.djangoproject.com/en/3.0/howto/static-files/deployment/
推荐阅读
- python - aiohttp如何在一个类中保存一个持久的ClientSession?
- apache-spark - 将字符串格式更改为日期
- php - mysqli_connect(): (08004/1040): 连接太多mysqli_driver.php
- c# - Xamarin.Forms:样式绑定不起作用
- module - Odoo 10:在 odoo 启动时自动安装自定义模块
- javascript - React - 从 API 调用创建对象并存储在一个大对象中
- apache - 使用 mod_authnz_ldap 公开组信息
- html - Angular Material Table - 将动态背景颜色应用于一行(Angular 2+)
- join - 如何使用实体框架结合嵌套交叉连接和左连接
- java - dropzone.js - 将目录和文件上传到 Spring MVC