首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django动态文件服务优化

django动态文件服务优化
EN

Stack Overflow用户
提问于 2011-12-15 02:42:09
回答 3查看 612关注 0票数 0

我正在从事一个django项目,该项目提供了一个API来生成图像缩略图,基本逻辑如下所示:

当源图像URL第一次出现时,

  1. 会执行某种图像操作,并在同一图像URL再次出现时返回缩略图
  2. ,django只需再次提供先前的缩略图图像(存储为静态媒体)。

基本上,案例2比案例1发生得更频繁,现在我一直使用django来服务映像,我认为这是一个糟糕的实践。

我想知道是否有可能为案例2做更好的形象服务?例如,是否有某种方式要求django向apache发送代理请求,并要求apache提供文件?

我知道我可以使用HTTP重定向来实现这一点,但是这似乎会在客户端产生太多的重定向请求(一个HTML页面将包含很多指向这个API的链接)。

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-15 03:11:40

最简单的解决方案就是使用带有条件的Apache重写规则。

代码语言:javascript
复制
RewriteCond %(REQUEST_URI) ^media
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule #Some rewrite rule to redirect from '/media/filename' to '/image_generator/filename'

这基本上只是检查文件是否存在于媒体目录中,如果不存在,则将用户发送到图像生成器,然后图像生成器可以生成该文件并将其保存到/media,在那里可以找到用于下一个请求的文件。

注:我从来没有用Django尝试过这种重定向,所以它可能需要一些调整。

票数 2
EN

Stack Overflow用户

发布于 2011-12-15 02:55:09

例如,

是否有某种方式要求django向apache发送代理请求,并要求apache提供文件?

你完全倒过来了。

阅读Django部署指南。https://docs.djangoproject.com/en/1.3/howto/deployment/modwsgi/#serving-files

Apache应该一直为所有的静态文件(例如图像)提供服务。一直都是。

Django永远不会提供图像文件(或.css或.js或.html以外的任何东西)。

票数 0
EN

Stack Overflow用户

发布于 2011-12-15 22:04:23

请参阅本节后面部分的文档:

http://code.google.com/p/modwsgi/wiki/ConfigurationGuidelines#The_Apache_Alias_Directive

使用Alias/AddHandler/mod_rewrite允许Django在文件系统中覆盖静态文件。换句话说,静态文件优先。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8514467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档