asynchronous - 如果它不存在,如何让nginx重试静态文件

我有一个应用程序服务器,它生成图像缩略图,其中的 URL 由 nginx 作为静态资源处理。目前这是一个同步过程,所以当请求通过时图像就在那里。

图像的 nginx 配置很简单:

location /image/cache/ {
    alias /var/www/image/cache/;
}

然而,我并没有让应用程序阻塞,而是希望生成 URL,而是异步生成相应的文件,从而释放应用程序服务器。然后,问题就变成了在 nginx 中处理图像请求,其中可能没有文件。

有没有办法配置 nginx 等待并重试还不存在的静态资源?

另一种方法可能是连接一个应用程序调用以确保在文件可用时返回该文件,我也愿意接受这样做的方法。

最佳答案

我认为你应该使用 error_page @failback 来通知你的应用程序/浏览器缩略图还没有出现

location /image/cache/ {
    alias /var/www/image/cache/;
    error_page         404 @fallback;
}

location @fallback {

    # image is not ready, so handle this situation here

}

通常的做法是按需生成缩略图并将它们缓存为静态文件。你的情况这么贵吗?你能解释一下你的决定背后的原因吗?我的意思是异步制作 thums

https://stackoverflow.com/questions/12190623/

相关文章:

wpf - UnhandledExceptionFilter 捕获所有异常但只重新抛出一些异常

php - 带有错误处理的 Wordpress 自定义登录

html - 关闭浏览器后保存 HTML5 SessionStorage

python-2.7 - Python--写入文件添加空字符

oop - 接口(interface)(替代多重继承)如何实现代码重用

text - 删除属于其他字符串的子字符串

sql - 与分组聚合中的数据集级聚合进行比较

arm - AOSP 中的工具链

ruby-on-rails-3 - 用于 rake 任务的 rails admin

java - 如何在 MyBatis 中调用返回 Oracle 记录类型的 Oracle 函数