Doragd
V2EX  ›  问与答

如何在 vercel 里面包含超过 50MB 的静态文件

  •  
  •   Doragd · Oct 2, 2022 · 3389 views
    This topic created in 1503 days ago, the information mentioned may be changed or developed.

    大家好,希望请教大家一个问题 这是我的目录结构,里面有一个大于 50MB 的静态文件

    //省略
    app.py
    assets/data.json # 大于 50MB
    

    这是 app.py 里面的涉及到静态文件的细节

    data = os.path.join(base_dir, "assets", "data.json")
    

    在部署的时候,vercel 提示说: serverless function exceeds maximum size limit of 50mb

    想请问下该怎么在 vercel 里面包含超过 50MB 的静态文件呢? 或者有什么更好的方法避免这一问题吗?

    谢谢

    23 replies  •  2022-10-08 15:45:49 +08:00
    eason1874
    eason1874
    Oct 2, 2022
    1
    好像是上传源码包最大 50MB ,解压后最大 250MB

    可以尝试压缩它,在部署代码里解压再加载
    Doragd
    Doragd
    OP
    Oct 2, 2022
    2
    @eason1874 感谢呜呜呜!!
    bgm004
    bgm004
    Oct 2, 2022 via Android
    3
    往死里薅是吧?
    Doragd
    Doragd
    OP
    Oct 2, 2022
    4
    @Track13 您好~是这样的,我的网站里面确实涉及到了这么大的静态文件,并非是为了作为其他用途,谢谢
    qfdk
    qfdk
    PRO
    Oct 2, 2022 via iPhone
    5
    @Doragd 分成两个文件呗
    Doragd
    Doragd
    OP
    Oct 2, 2022
    6
    @qfdk 谢谢回复,应该是整体大小不超过 50MB
    Doragd
    Doragd
    OP
    Oct 2, 2022
    7
    @eason1874 发现不会报错了,但是还是 500 错误 2333
    qfdk
    qfdk
    PRO
    Oct 2, 2022 via iPhone
    8
    @Doragd 这样明确了 你可以分开两个工程 一个最为静态资源 zip 一下 然后上传完 unzip. 原工程的静态资源指向这里. 方便替换静态资源而不中断服务
    Doragd
    Doragd
    OP
    Oct 2, 2022
    9
    @qfdk 尝试过压缩再解压,deploy 过程不会报错了,但是还是提示 500qwq
    Shorekeeper
    Shorekeeper
    Oct 2, 2022
    10
    Vercel 免费版有运行时间 10s 限制,但 500 一概不是因为这个。
    能不能 try 一下,把 traceback 返回来?
    Shorekeeper
    Shorekeeper
    Oct 2, 2022
    11
    @SunsetShimmer *应该
    changwei
    changwei
    Oct 2, 2022 via Android❤️1
    12
    把这个静态资源放到公有云 oss 里面比较好,马上双十一各大云也有优惠包可以蹲一下
    SorcererXW
    SorcererXW
    Oct 2, 2022
    13
    json 压缩空间还是很大的,比如换成二进制 protobuf/msgpack 、gzip 压缩
    QingStone
    QingStone
    Oct 2, 2022 via iPhone
    14
    假如涉及到会处理这个文件,那么时间超长,也会导致响应超时。
    kkocdko
    kkocdko
    Oct 2, 2022
    15
    回 14 楼:建议压缩,用个解压快一点的算法,lz4/zstd 什么的。
    另外毕竟人家免费的服务,还是善良一点比较好。
    docx
    docx
    Oct 2, 2022 via iPhone
    16
    如果这是符合使用条款的倒也没啥

    不过我还是倾向于找个对象存储丢上去,免费的也可以
    wxf666
    wxf666
    Oct 2, 2022
    17
    @kkocdko 确实。拿了个 ~/.conda/pkgs/cache/e5e4a514.json ( 64.8 MB )试了下

    - lzma 极限压缩后 7.14 MB ,解压时间为 0.7 s
    - zstd 极限压缩后 7.26 MB ,解压时间为 0.1 s


    @Doragd 或者,考虑用 pickle 存?文件又小,速度又快

    上述文件用 pickle 存后,只需 35.1 MB 了

    lzma 极限压缩后 7.06 MB ,zstd 极限压缩后 7.68 MB
    Doragd
    Doragd
    OP
    Oct 7, 2022
    18
    @wxf666 谢谢您~我试试呢
    Doragd
    Doragd
    OP
    Oct 7, 2022
    19
    @QingStone 原来如此,谢谢您呜呜呜
    Doragd
    Doragd
    OP
    Oct 7, 2022
    20
    @SunsetShimmer 谢谢,很有可能运行超时了 qwq
    Doragd
    Doragd
    OP
    Oct 7, 2022
    21
    @changwei 请问把这个放进 oss 以后,那访问网站的时候是临时下载回来吗?
    Shorekeeper
    Shorekeeper
    Oct 7, 2022
    22
    @Doragd 如果超时,返回的是 Vercel 的错误页(如果有 Cloudflare 什么的,可能是 CDN 的错误页),Vercel 报错是 504: GATEWAY_TIMEOUT Code: FUNCTION_INVOCATION_TIMEOUT ,会提示 This Serverless Function has timed out.
    Doragd
    Doragd
    OP
    Oct 8, 2022
    23
    @SunsetShimmer 谢谢您,好像报的是 This Serverless Function has timed out.
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2097 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 12:11 · PVG 20:11 · LAX 04:11 · JFK 07:11
    ♥ Do have faith in what you're doing.