我的网址格式为 http:// domain / image /⟨ uuid⟩ /42x42/some_name.png 。 Web服务器(nginx)配置为查找文件 / some / path / image /⟨ uuid⟩ /thumbnail_42x42.png ,如果它不存在,则发送后端的URL(Django via mod_wsgi),然后生成缩略图。然后后端发出302重定向到客户端请求的完全相同的URL,并认为在第二次请求时服务器会注意到缩略图文件并直接发送它。

问题是,这适用于所有浏览器吗?到目前为止,测试没有显示任何问题,但我能确定所有用户代理都会按预期解释这个吗?

更新:让我澄清意图。目前的工作原理如下:

  1. 客户端请求图像的缩略图。
  2. 服务器看到该文件不存在,因此它将请求转发给后端。
  3. 后端创建缩略图并返回302。
  4. 后端释放所有资源,让服务器将新生成的文件共享给当前和后续客户端。
  5. 让后端为新创建的图像服务更糟糕,原因有两个:

    1. 必须创建两种提供相同数据的方式;
    2. 服务器在提供静态内容方面要好得多。如果客户端链接速度极慢怎么办?后端不是特别快,也不是内存效率高,并且在给客户端喂食垃圾时将其保存在内存中可能会造成浪费。
    3. 所以我让后端保持最短的工作时间。

      更新²:我非常感谢一些RFC参考或者有很多浏览器经验的人的意见。所有这些肯定的答案都令人愉快,但它们看起来毫无根据。

有帮助吗?

解决方案

如果没有,客户端坏了。大多数客户端将遵循重定向循环,直到达到最大值。所以是的,它应该没问题,直到你的后端因任何原因没有生成缩略图。

您可以改为将网址更改为 http:// domain / djangoapp / generate_thumbnail 并返回缩略图和正确的内容类型等等

其他提示

是的,可以重新指向与之前相同的URI。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top