我正在从事一个django项目,该项目提供了一个API来生成图像缩略图,基本逻辑如下所示:
当源图像URL第一次出现时,
基本上,案例2比案例1发生得更频繁,现在我一直使用django来服务映像,我认为这是一个糟糕的实践。
我想知道是否有可能为案例2做更好的形象服务?例如,是否有某种方式要求django向apache发送代理请求,并要求apache提供文件?
我知道我可以使用HTTP重定向来实现这一点,但是这似乎会在客户端产生太多的重定向请求(一个HTML页面将包含很多指向这个API的链接)。
谢谢。
发布于 2011-12-15 03:11:40
最简单的解决方案就是使用带有条件的Apache重写规则。
RewriteCond %(REQUEST_URI) ^media
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule #Some rewrite rule to redirect from '/media/filename' to '/image_generator/filename'这基本上只是检查文件是否存在于媒体目录中,如果不存在,则将用户发送到图像生成器,然后图像生成器可以生成该文件并将其保存到/media,在那里可以找到用于下一个请求的文件。
注:我从来没有用Django尝试过这种重定向,所以它可能需要一些调整。
发布于 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以外的任何东西)。
发布于 2011-12-15 22:04:23
请参阅本节后面部分的文档:
http://code.google.com/p/modwsgi/wiki/ConfigurationGuidelines#The_Apache_Alias_Directive
使用Alias/AddHandler/mod_rewrite允许Django在文件系统中覆盖静态文件。换句话说,静态文件优先。
https://stackoverflow.com/questions/8514467
复制相似问题