Django 的最佳部署配置是什么?

发布于 2024-12-20 23:34:52 字数 566 浏览 1 评论 0原文

我将在服务器上部署我的 django 项目。为此我计划进行以下优化。

  • 我想知道的是我错过了什么吗?
  • 我怎样才能更好地做到这一点?

前端:

  1. Django-static (用于压缩静态媒体)
  2. 从 CDN
  3. 缓存控制标头
  4. 运行 jquery索引 Django 数据库(对于某些型号)

服务器端:

  1. uswginginx
  2. Memcached(对于某些查询)
  3. 将媒体和数据库放在不同的服务器上

I will be deploying my django project on the server. For that purpose I plan on doing the following optimization.

  • What i would like to know is that am I missing something?
  • How can I do it in a better manner?

Front-end:

  1. Django-static (For compressing static media)
  2. Running jquery from CDN
  3. Cache control for headers
  4. Indexing the Django db (For certain models)

Server side:

  1. uswgi and nginx .
  2. Memcached (For certain queries)
  3. Putting the media and database on separate servers

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

女中豪杰 2024-12-27 23:34:52

这些是我经常使用的一些优化:

前端:

  1. 使用js加载库,例如labjsrequirejsyepnope。您仍然应该压缩/合并 js 文件,但在大多数用例中,最好向多个 js 文件发出多个请求并并行运行它们,以便在每个页面上运行 1 个巨大的 js 文件。我总是将它们分成几组,以平衡请求和并行加载。有些还允许条件加载和故障转移(即,如果由于某种原因,您的 cdn'd jquery 不再存在)

  2. 在可能的情况下使用精灵。

后端:

  1. 配置 django-compressor (django-static 即可)
  2. 在 nginx 中启用 gzip 压缩。
  3. 如果您使用 postgresql(这是推荐的 sql 数据库),请使用 pgbouncer 或 pgpool2 之类的东西。
  4. 使用和配置缓存(我使用 redis)
  5. (已经提到过 - 使用 celery 来处理所有可能需要更长时间的事情)
  6. 小型数据库工作:在需要的地方使用索引,注意进行太多查询(在您应该使用 select_lated 的地方不使用时很常见) )或慢查询(在数据库中启用日志慢查询)。始终将 select_lated 与参数一起使用。
  7. 如果实施搜索,我总是使用独立的搜索引擎。 (elasticsearch/solr)
  8. 现在对应用程序进行分析并寻找特定于代码的改进。有些事情需要关注

These are some optimization I use on a regular basis:

frontend:

  1. Use a js loading library like labjs, requirejs or yepnope. You should still compress/merge your js files, but in most use cases it seems to be better to make several requests to several js files and run them in parallel as to have 1 huge js file to run on each page. I always split them up in groups that make sense to balance requests and parellel loading. Some also allow for conditional loading and failovers (i.e. if for some reason, your cdn'd jquery is not there anymore)

  2. Use sprites where posible.

Backend:

  1. configure django-compressor (django-static is fine)
  2. Enable gzip compression in nginx.
  3. If you are using postgresql (which is the recommended sql database), use something like pgbouncer or pgpool2.
  4. Use and configure cache (I use redis)
  5. (already mentioned - use celery for everything that might take longer)
  6. Small database work: use indexes where it's needed, look out for making too many queries (common when not using select_related where you are supposed to) or slow queries (enable log slow queries in your db). Always use select_related with arguments.
  7. If implementing search, I always use a standalone search engine. (elasticsearch/solr)
  8. Now comes profiling the app and looking for code specific improvements. Some things to keep an eye on.
北方的巷 2024-12-27 23:34:52

如果您需要支持异步和异步,可以选择安装 Celery。期间任务。如果这样做,请考虑安装 Redis 而不是 Memcached。使用 Redis,您可以管理会话并执行 Celery 操作以及缓存。

看看这里: http://unfoldthat.com/2011/09 /14/try-redis-instead.html

An option may be installing Celery if you need to support asynchronous & period tasks. If you do so, consider installing Redis instead of Memcached. Using Redis you can manage sessions and carry out Celery operations as well as do caching.

Take a look at here: http://unfoldthat.com/2011/09/14/try-redis-instead.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文