如果存在,请提供第一个静态页面

时间:2013-09-23 23:15:19

标签: django apache nginx

我有以下情况;我有一个简单的博客应用程序,它从数据库中获取条目。标准CRUDL,没什么特别的。

由于博客文章/页面的阅读比修改更多,我想在第一次提供博客页面时生成静态页面,并为后续查询提供。

我唯一的解决方案是编写一个视图装饰器来检查静态页面并在存在时提供(如果不存在则生成它)。是否可以配置apache(或nginx)来执行条件服务部分?

是的,我知道我可以使用静态博客生成器,但我的目标是将应用程序扩展到一个简单的博客之外。

1 个答案:

答案 0 :(得分:2)

Nginx documention表示可以使用try_files指令尝试本地文件,然后回退到代理(例如Gunicorn运行您的Django应用程序)。

location / {
    try_files $uri $uri.html @django;
}

location @django {
    proxy_pass http://127.0.0.1:8000; 
}

看起来有一种方法可以在Apache中实现相同的功能。请参阅以下问题和答案以获得解释:https://serverfault.com/questions/290784/what-is-apaches-equivalent-of-nginxs-try-files

使用mod_rewrite:

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule ^/(.*)$ balancer://app_cluster%{REQUEST_URI} [P,QSA,L]