请问 关于图片储存有哪些好方案呢? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Nxxx
V2EX    问与答

请问 关于图片储存有哪些好方案呢?

  •  
  •   Nxxx 2022-12-05 11:04:35 +08:00 4801 次点击
    这是一个创建于 1048 天前的主题,其中的信息可能已经有所发展或是发生改变。

    RT 老哥哥们 我自己在搞一个壁纸网站 然后呢图片文件很大 请问下 关于图片储存有那些比较好的方案呢(还需要比较便宜= =、)

    PS: 我买的服务器 硬盘很贵 但是流量倒是很多

    图片存储在谷歌云 storage

    https://pic.jitudisk.com/public/2022/12/05/660917ac18901.png

    34 条回复    2023-03-15 23:37:09 +08:00
    44670
        1
    44670  
       2022-12-05 11:06:44 +08:00
    在储存图片时,一个好的方案是使用云存储。这种方式可以让你的图片存储在云端,而不是在你的服务器上。这样可以节省你服务器的硬盘空间,同时也可以降低你的成本。此外,云存储还可以提供更高的可用性和可扩展性。

    你可以在不同的云服务提供商中选择合适的云存储方案。通常来说,这些服务提供商会提供一个按需付费的模型,这样你只需要为实际使用的存储空间付费。

    此外,你还可以使用图片优化技术来减小图片的文件大小。这样可以降低你的流量成本,同时也可以让图片加载更快。你可以使用各种图片优化工具来实现这一点,例如 ImageOptim 或 Kraken.io

    总之,在储存图片时,使用云存储和图片优化是一个很好的方案。它可以节省你的成本,并提高图片的加载速度和可用性。
    Nxxx
        2
    Nxxx  
    OP
       2022-12-05 11:18:54 +08:00
    @44670 好的 谢谢老哥 顺便问下 那比如我存在谷歌云上的图片 我不想直接用谷歌云那边的公开链接,是通过一个中间件获取数据流 然后在发送给客户端,还是说 可以靠 nginx 也能实现我说的中间件的效果呢
    44670
        3
    44670  
       2022-12-05 11:22:57 +08:00
    @Nxxx 是的,你可以通过使用中间件来获取图片数据流,然后再发送给客户端。这样你就不用使用谷歌云上的公开链接,而是通过你自己的服务器来获取图片。

    同时,你也可以使用 nginx 来实现这一功能。通过在 nginx 配置文件中添加一些特定的指令,你可以实现通过 nginx 服务器获取图片数据流,然后再发送给客户端。这样做的好处是可以让你的服务器更加高效地处理图片流量,减少了对中间件的依赖。

    总之,你可以通过使用中间件或 nginx 来实现将图片从云存储中获取并发送给客户端的功能。选择哪种方式取决于你的具体需求和偏好。

    配置 nginx 来实现从云存储中获取图片并发送给客户端的功能,需要在 nginx 配置文件中添加一些特定的指令。下面是一个示例配置:

    server {
    listen 80;
    server_name example.com;

    location /images/ {
    # 设置代理服务器,用于从云存储中获取图片
    proxy_pass https://storage.googleapis.com/my-bucket/;

    # 设置请求头,以便云存储能够识别请求
    proxy_set_header Authorization "Bearer <your_access_token>";
    }
    }

    在上面的配置中,我们首先在 server 块中声明了监听 80 端口,并设置了服务器名称为 example.com 。然后我们在 location 块中指定了 URL 路径 /images/,这表示当客户端请求的 URL 以 /images/ 开头时,nginx 会执行特定的操作。

    接下来我们使用 proxy_pass 指令来设置代理服务器的地址。这里我们指定的是云存储的地址,即 https://storage.googleapis.com/my-bucket/。然后我们使用 proxy_set_header 指令来设置请求头,其中包含了访问令牌,这样云存储才能识别请求。

    当客户端请求 /images/ 目录下的图片时,nginx 会向云存储发送代理请求,并将云存储返回的图片数据流直接发送给客户端。

    通过 nginx 实现从云存储中获取图片并发送给客户端的功能,可能会存在一些安全风险。

    首先,由于图片数据流是通过 nginx 代理服务器传输的,因此有可能存在中间人攻击的风险。如果攻击者能够截获图片数据流,那么就可能会泄露用户的隐私数据,或者修改图片内容,从而导致不安全的后果。

    其次,如果你在 nginx 配置文件中使用了明文的访问令牌,那么也有可能会泄露你的云存储账号信息。如果攻击者能够获取到你的访问令牌,那么就可以擅自访问你的云存储账号,从而导致数据泄露或损坏的风险。

    为了避免这些安全风险,你需要采取一些预防措施。例如,你可以使用 HTTPS 协议来保证图片数据流的传输安全,并且在 nginx 配置文件中使用加密的访问令牌,以防止攻击者窃取你的账号信息。同时,你也可以定期检查你的网络安全,以确保你的系统不被攻击。
    Nxxx
        4
    Nxxx  
    OP
       2022-12-05 11:31:12 +08:00
    @44670 谢谢了 又学到了很多 ,老哥 不是机器人吧= =
    walkersz
        5
    walkersz  
       2022-12-05 11:36:36 +08:00
    @Nxxx 像机器人
    imMetaverse
        6
    imMetaverse  
       2022-12-05 11:37:09 +08:00
    怎么都是 ai 答复了
    aabbcc112233
        7
    aabbcc112233  
       2022-12-05 11:38:44 +08:00
    @Nxxx 用的 chatgpt ,直接 b
    tanglu
        8
    tanglu  
       2022-12-05 11:44:36 +08:00
    对象存储是一个不错选择
    我推荐 cloudflareR2 不计流量 1T 空间 15 刀 /月 到国内速度也还不错
    之前有个测试 ****loc.com/thread-1093052-1-1.html

    测试视频 : https://r2.smalljp.com/default/xiongchumo.mp4
    Nxxx
        9
    Nxxx  
    OP
       2022-12-05 11:50:05 +08:00
    @tanglu 好的谢谢 我怎么吧这个给忘了-= =
    estk
        10
    estk  
       2022-12-05 12:55:23 +08:00 via iPhone
    https://nft.storage
    QUC062IzY3M1Y6dg
        11
    QUC062IzY3M1Y6dg  
       2022-12-05 13:07:20 +08:00
    对象存储 bitiful 挺不错,成本很低
    cheese
        12
    cheese  
       2022-12-05 13:20:28 +08:00   3
    @Livid 1L 这种,连续多天多次直接回复 chatgpt 生成的回答,应该怎么定性?支持还是反对,反对的话,是警告还是 ban 号。这样的回答在 v 站越来越多了
    perfectlife
        13
    perfectlife  
       2022-12-05 13:20:58 +08:00
    fastdfs minio
    Livid
        14
    Livid  
    MOD
    PRO
       2022-12-05 13:41:35 +08:00
    @cheese 谢谢。会彻底 ban 。
    binaryify
        15
    binaryify  
       2022-12-05 13:42:30 +08:00
    ai 回答 统一 block 处理
    Nxxx
        16
    Nxxx  
    OP
       2022-12-05 14:59:45 +08:00   1
    @Livid 虽说是机器人,但是也确实提供有效的信息了,如果要 ban 的话 平台能不能出个类似的机器人来做这种回答?
    Livid
        17
    Livid  
    MOD
    PRO
       2022-12-06 02:57:26 +08:00   3
    @Nxxx 那你为什么不直接用 chat.openai.com 呢?
    SenLief
        18
    SenLief  
       2022-12-06 11:00:57 +08:00
    cf 的 R2 不错,容量也不算贵。
    mouyong
        19
    mouyong  
       2022-12-06 13:35:15 +08:00   1
    如果你愿意一次付费,一直使用,可以采用 vpn ,nas 结合的方案。购买一次 nas ,放在家里,使用 opnvpn ,再有个云端服务器,不用担心流量费用、存储过大、存储文件丢失等各种问题。
    clrss
        20
    clrss  
       2022-12-06 14:10:09 +08:00
    AI 回复相当于全文转载, 至少要注明出处. 否则 ban 了不冤.
    Nxxx
        21
    Nxxx  
    OP
       2022-12-06 15:18:00 +08:00
    @Livid 好的 谢谢 这样后续有些低级常规的问题 也不用来麻烦论坛里的各位老哥了
    Nxxx
        22
    Nxxx  
    OP
       2022-12-06 15:18:24 +08:00
    @SenLief 我也看了 R2 的文档看的迷迷瞪瞪的 然后买了 cf 的 image = =
    tanglu
        23
    tanglu  
       2022-12-06 16:25:38 +08:00
    @Nxxx 我忘了还有 images,images 使用感觉怎么样呀?
    Nxxx
        24
    Nxxx  
    OP
       2022-12-06 18:00:06 +08:00
    @tanglu 感觉很方便 因为我的是壁纸网站 所谓公开也无所谓了了 而且减轻了我服务器传输图片数据的问题直接全放 cf 了 预付 5 美金 10w 张照片不 只限制数量,后续每 10w 张图 增加 1 美金 后付款
    woshinide300yuan
        25
    woshinide300yuan  
       2023-01-15 23:23:52 +08:00
    @Nxxx 可以给看看网站吗?学习一下。
    Nxxx
        26
    Nxxx  
    OP
       2023-03-11 12:34:29 +08:00
    @tanglu 顶不住了太贵了 现在预估我一月可能要交 100 刀的图片托管费用 其中大部分都是图片展示次数导致的收费 不知道是收费策略改了还是我当时没看清楚
    https://imgloc.com/i/sIhAZ
    https://imgloc.com/i/sI5NF
    tanglu
        27
    tanglu  
       2023-03-11 13:52:50 +08:00
    @Nxxx 我没有用过 images ,他难道不是像 R2 那样缓存到 CDN 吗?
    R2 对象存储也是收取读取费用,文件读取过程是"文件服务器>>cloudflareCDN>>用户",R2 只是在"文件服务器>>cloudflareCDN"这一段的读取次数计费,但是 cloudflareCDN 会将文件缓存,用户下次访问直接就是“cloudflareCDN>>用户”,不会涉及到请求次数计费
    我以为 images 也是这样
    R2 可以参考我写的: https://blog.tanglu.me/cloudflare-R2-configure
    tanglu
        28
    tanglu  
       2023-03-11 13:55:46 +08:00
    你可以说下你的总文件大小和带宽平均大小,我帮你分析下选用什么划算
    Nxxx
        29
    Nxxx  
    OP
       2023-03-12 11:30:22 +08:00
    @tanglu 好的先谢谢老哥了 那个 images 可以理解为付费的图床,然后我的文件 99%都是图片 100K 以下目前大概 6-7GB 应该 因为都存在 images 所以我不太清楚 再有我目前只能看服务器的平均带宽 传输也只是一下数据库查询的关联数据信息和图片 url 的信息,目前服务器平均 2.5MB/s 上下行差不多
    tanglu
        30
    tanglu  
       2023-03-12 13:53:15 +08:00   1
    @Nxxx 才 10GB 不到的话肯定用 R2 对象存储划算,给存储桶套上你的 CF 域名然后在规则中设置全部缓存就行,这样存储和流量成本为 0 元
    可以参考我博客写的:
    R2 对象存储: https://blog.tanglu.me/cloudflare-R2-configure
    其他缓存规则: https://blog.tanglu.me/cloudflare-configure/#Caching
    tanglu
        31
    tanglu  
       2023-03-12 13:54:35 +08:00
    我以为你图片是 10MB 左右的大小,100k 大小就用对象存储就行
    Nxxx
        32
    Nxxx  
    OP
       2023-03-15 13:01:54 +08:00
    @tanglu 老哥 我用你那个教程 下载 sh 脚本后就报错了= = 不过还是谢谢了
    Nxxx
        33
    Nxxx  
    OP
       2023-03-15 13:02:07 +08:00
    @tanglu 老哥 我用你那个教程 下载 sh 脚本后就报错了 不过还是谢谢了
    tanglu
        34
    tanglu  
       2023-03-15 23:37:09 +08:00
    @Nxxx 我是 debian 系统,你直接搜索安装 rclone 就会有教程
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2683 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 14:14 PVG 22:14 LAX 07:14 JFK 10:14
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86