【问题标题】:How to efficiently serve JS and CSS in a python application如何在 python 应用程序中高效地提供 JS 和 CSS
【发布时间】:2015-01-16 23:18:49
【问题描述】:

我最近使用 gunicorn 和 nginx 部署了一个 WSGI 应用程序(openERP v-8.0)。我注意到第一个请求需要很长时间(1-2 分钟),但后续请求非常快。

在打开开发者工具时,我注意到第一个请求中的大部分时间都花在了为 JS 和 CSS 提供服务上(请求如下:

我能以某种方式缓存这些请求吗?或者有没有一种有效的方式来处理这些请求?

谢谢

【问题讨论】:

  • 如果提供 JavaScript 或 CSS 文件需要一到两 分钟,那么文件的大小可能是千兆字节,或者出现严重错误。
  • 压缩文件。适当时使用 CSS 精灵。我怀疑您的系统已经以某种方式缓存下载,因为只有第一个请求需要这么长时间。有各种各样的技术可以减少下载量,但在您缩小问题范围并向我们展示一些代码之前,我们无法提出任何建议。
  • @Blazemonger:您可以查看代码here。我按原样使用 JS 和 CSS
  • 这不是 SO 的工作方式 - 我们要求您将代码直接放在您的问题中,这样它就可以供后代使用,未来的访问者可以快速查看它是否对他们有帮助自己的问题。此外,您需要将问题简化为可管理的代码块——没有人愿意搜索整个文件来找出甚至可能不存在的问题。
  • JS/CSS 文件是直接由 nginx 服务的,还是那些请求被推迟到下游?

标签: javascript python css nginx gunicorn


【解决方案1】:

Web 服务器响应第一个查询比响应后续查询慢是很正常的,无论技术堆栈如何,如果第一个查询导致初始化工作,而后续查询由于缓存、重用 open 而避免了额外工作数据库连接等。

一个简单而流行的解决方法(同样,无论技术堆栈如何)是在您启动服务器后立即在内部且无害地发送“第一个查询”(大概在您用于此启动的同一脚本中) .

这种非常简单的方法的术语是“发送预热查询”。人们可以对此有所了解(如果需要不同的查询来预热各种缓存等),但通常即使是最简单的查询也足以胜任这个角色。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-21
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    • 2017-05-14
    • 2015-02-19
    相关资源
    最近更新 更多