【问题标题】:Fetching and caching photos on demand with nginx使用 nginx 按需获取和缓存照片
【发布时间】:2014-03-06 09:26:32
【问题描述】:

我正在开发一个应用程序,其中我使用第三方服务提供的大部分照片。在构建我的第一个原型时,我直接从服务中获取图像,即

<img src="http://thirdpartyservice.com/img/12345.jpg">

虽然它是生产的,但每次收到请求时从服务中获取图像是没有意义的。它太慢了,因为它同时为数百万用户提供服务。

我想在 nginx 之上构建一个薄层,它可以根据需要 24 小时获取和缓存图像。所以不是每次都调用服务,我宁愿调用

<img src="http://myapp.com/img?url=thirdpartyservice.com/img/12345.jpg">

如果这是第一次请求图像,将从远程服务获取图像并在我的服务器上缓存 24 小时。

这可能与nginx有关吗?

【问题讨论】:

  • 这个第三方服务真的很慢,还是你觉得会很慢?如果他们真的为数百万用户服务,可能他们已经优化了他们的性能。为什么你认为你的简单代理会有更好的性能?
  • @alexeyten 是的,有时它有点慢而且不可靠

标签: nginx image-caching


【解决方案1】:

首先我建议不要将 url 格式更改为 http://myapp.com/img/12345.jpg,以防我们总是代理到同一个 thirdpartyservice.com。这是基于nginx wiki的配置示例。

http {
    proxy_cache_path  /data/nginx/cache  levels=1:2    keys_zone=STATIC:10m
                                         inactive=24h  max_size=1g;
    server {
        location /img/ {
            proxy_pass             http://thirdpartyservice.com;
            proxy_set_header       Host thirdpartyservice.com;
            proxy_cache            STATIC;
            proxy_cache_valid      200  1d;
            proxy_cache_use_stale  error timeout invalid_header updating
                                   http_500 http_502 http_503 http_504;
        }
    }
}

official documentation 中有很多关于缓存调整的指令。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多