我有以下情况;我有一个简单的博客应用程序,它从数据库中获取条目。标准 CRUDL,没什么特别的。
由于博客文章/页面的阅读量多于修改量,因此我想在第一次提供博客页面时生成一个静态页面,并将其提供给后续查询。
我唯一的解决方案是编写一个视图装饰器来检查静态页面并在存在时提供它(如果不存在则生成它)。是否可以配置 apache(或 nginx)来执行条件服务部分?
是的,我知道我可以使用静态博客生成器,但我的目标是将应用程序扩展到一个简单的博客之外。
Nginx 文档指出可以使用try_files指令尝试本地文件,然后回退到代理(例如,运行您的 Django 应用程序的 Gunicorn)。
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]