python - 在 Django 中处理 .wasm.gz 和 .data 文件的正确方法?
问题描述
我目前正在处理在 192.168.0.168 上本地运行的 django Web 应用程序中的一个问题。我正在使用一个使用 .wasm.gz 文件和 .data 文件的 OCR 库。在他们提到的文档中:“在某些情况下,您需要配置您的网络服务器以提供数据和 wasm.gz 文件。”。我的第一个想法是在 django 中添加以下 mimetypes:
- mimetypes.add_type("application/x-gzip", ".wasm.gz", True)
- mimetypes.add_type("application/octet-stream", ".data", True)
但是,我仍然看到错误:error wasm-instantie。它以某种方式无法实例化 wasm,因为 django 需要正确地提供 wasm.gz 和 .data 文件。但是这些已添加到静态文件夹中,如果我手动浏览到链接,我可以下载它们。有谁知道我需要做什么才能正确地提供这些服务?
解决方案
如果您使用的库使用 加载 WASM 代码WebAssembly.instantiateStreaming
,则必须使用application/wasm
内容类型来提供 WASM 文件。GZip 是一种内容编码而不是媒体类型。
我假设您使用的是开发服务器,因此如果出现上述问题,那么您应该将上面的第一行代码替换为:
mimetypes.add_type("application/wasm", ".wasm.gz", True)
(请注意,仅在运行 Python 3.8 之前的版本时才需要上述内容。如果您运行的是 Python 3.8 或更高版本,那么这不是您的解决方案。)
澄清一下,使用 GZip 预压缩静态资源是相当普遍的做法,然后通过 HTTP 发送带有Content-Encoding: gzip
标头集的资源。这样可以节省每次请求文件时压缩文件的服务器资源。正确设置后,浏览器会接收 GZipped 字节,解压缩它们,并将解压缩的字节解释为适当的 Content-Type。
Django 开发服务器遵循内置mimetypes
包,它执行此测试。
推荐阅读
- vuejs2 - vue中如何将一个组件作为另一个组件的参数传递?
- django - Django 压缩器不会丑化 javascript
- coldfusion - 使用标头和参数创建 chttp
- queue - Postfix 和 amavisd-new 弹跳和未送达(排队)的电子邮件
- laravel - 使用旧访问令牌的 Laravel 护照
- python - PyTorch 最有效的 Jacobian/Hessian 计算
- javascript - 视差滚动 - 降低容器的高度以匹配变换间隙
- excel - 是否可以用唯一的颜色为每组重复值着色?
- java - API 级别低于 26 的通知代码
- java - 将简单地图转换为地图列表的地图