Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在django api中发送图像?_Python_Django_Django Models - Fatal编程技术网

Python 如何在django api中发送图像?

Python 如何在django api中发送图像?,python,django,django-models,Python,Django,Django Models,我正在尝试将我的图像从django服务器发送到应用程序。有两种方法解决上述问题: 1) 发送图像的url 2) 发送编码图像 由于以下原因,我不确定使用哪一个:- return JsonResponse({'image':model.image.url}) 如果我选择第一条路。Json响应会更快,但若用户返回一个页面两次,它将在服务器上发出两个请求。而且,不可能缓存图像 在第二种方法中,我可以在客户端应用程序中缓存图像,但编码是否会增加服务器的总体响应时间 这是从api发送图像的推荐方法。 目

我正在尝试将我的图像从django服务器发送到应用程序。有两种方法解决上述问题: 1) 发送图像的url 2) 发送编码图像 由于以下原因,我不确定使用哪一个:-

return JsonResponse({'image':model.image.url})
  • 如果我选择第一条路。Json响应会更快,但若用户返回一个页面两次,它将在服务器上发出两个请求。而且,不可能缓存图像
  • 在第二种方法中,我可以在客户端应用程序中缓存图像,但编码是否会增加服务器的总体响应时间
  • 这是从api发送图像的推荐方法。 目前,我通过以下方式发送图像:-

    return JsonResponse({'image':model.image.url})
    

    答案是方法1。编码图像会破坏你的服务器响应时间,除非它们像缩略图或头像一样非常小,即使这样,我也不会养成这样的习惯。我见过应用程序因这种做法而变得不可用。大多数浏览器会在会话期间自动缓存图像。如果服务器性能是一个大问题,而映像又在拖后腿,通常我会将映像存储在某种静态文件主机(如s3)中,并在现实环境中使用边缘缓存。

    答案是方法1。编码图像会破坏你的服务器响应时间,除非它们像缩略图或头像一样非常小,即使这样,我也不会养成这样的习惯。我见过应用程序因这种做法而变得不可用。大多数浏览器会在会话期间自动缓存图像。如果服务器性能是一个大问题,而映像又在拖后腿,通常我会将映像存储在某种静态文件主机(如s3)中,并在现实环境中使用边缘缓存。

    您可能希望使用#1并通过URL发送。通常,您不会直接从服务器交付映像文件,而是从S3或GCS之类的云存储中交付。更高级的设置甚至包括CDN(内容交付网络),如Fastly或Cloudfront,以实现轻松缓存并在全球范围内服务流量


    如果您选择通过编码图像发送(例如,在base64中),请注意,主体响应大小的增加将增加难以置信的响应时间,甚至可能导致在30秒左右完全超时。用户最终会有更长的响应时间,更容易流失,而您为服务器支付的费用也会更高。

    您可能希望使用#1并通过URL发送。通常,您不会直接从服务器交付映像文件,而是从S3或GCS之类的云存储中交付。更高级的设置甚至包括CDN(内容交付网络),如Fastly或Cloudfront,以实现轻松缓存并在全球范围内服务流量


    如果您选择通过编码图像发送(例如,在base64中),请注意,主体响应大小的增加将增加难以置信的响应时间,甚至可能导致在30秒左右完全超时。用户最终会有更长的响应时间,更容易流失,而您为服务器支付的费用也会更高。

    @brayan60那么,既然我只会获得一个url,我该如何在我的应用程序中缓存这些图像呢。我使用的是一个混合客户端appI回答了这个问题:浏览器通常会自动缓存图像,所以你不必担心。事实上,说服浏览器在图像经常使用静态url更改的情况下不缓存图像会有点棘手。您可以使用浏览器的缓存说明在图像上设置某些标题。如果这真的是一个问题,你可以使用边缘缓存。@brayan60那么我如何在我的应用程序中缓存这些图像,因为我只能得到一个url。我使用的是一个混合客户端appI回答了这个问题:浏览器通常会自动缓存图像,所以你不必担心。事实上,说服浏览器在图像经常使用静态url更改的情况下不缓存图像会有点棘手。您可以使用浏览器的缓存说明在图像上设置某些标题。如果这真的是一个问题,您可以使用边缘缓存。是否有任何方法可以缓存url中的图像,以便它们可以在不向服务器发出请求的情况下重新使用?为此,您需要CDN,如果发送了
    if None Match
    标头,则将使用Etags向客户端发出资源未更改的信号。是否有任何方法可以缓存url中的图像,以便在不向服务器发出请求的情况下重新使用这些图像?为此,您需要CDN,如果发送了
    if None Match
    标头,则将使用ETag向客户端发出一个资源未更改的信号。