求静态资源服务器正确使用姿势

2016-11-23 17:14:24 +08:00
 hlg002

需求描述

小网站需要把目前全站的静态资源和用户 form 上传的静态资源存放在一个独立的服务器中;

启用独立域名后再使用 cdn 来分流;

但是目前有一个问题就是:如何把用户 form 上传的静态资源上传到“静态资源服务器”?

目前想了 2 个方案,不知道大家一般都是怎么弄的?


方案 1

修改 web 服务器后台逻辑,把 form 表单上传文件直接移动到“静态资源服务器”对应的目录下。

方案 2

使用 rsync 同步, web 服务器的附件目录有更新就直接同步到“静态资源服务器”


下图是有问题的,只适用于 form 表单只有一个 input=file 专用于上传

如果出现以下表单就逻辑有问题了,其他的数据web服务器就无法获取了

<form action="http://img.xxx.com/upload/">
    <input type="text"  name="user_name" />
    <input type="radio" name="gender" value="0" />
    <input type="radio" name="gender" value="1" />
    <input type="file"  name="user_face" />
</form>

2330 次点击
所在节点    问与答
5 条回复
abelyao
2016-11-23 17:23:19 +08:00
abelyao
2016-11-23 17:26:14 +08:00
好像我回复之后你 update 了内容。
对于其它数据字段,可以分开记录,比如数据字段 ajax 记录到业务服务器,图片上传到静态资源服务器之后,由静态资源服务器反馈一个结果,再记录到业务服务器;或者直接由静态资源服务器回调业务服务器的接口。
基本上,又拍云 和 七牛 的表单上传功能都能为你的问题提供参考。
lsylsy2
2016-11-23 17:26:27 +08:00
静态服务器用类似 nginx 的 proxy_store 功能,做一个镜像;
然后 web 服务器定期扫描旧文件并(确保静态服务器上有之后)删除。
lsylsy2
2016-11-23 17:28:00 +08:00
我刚才说的方法,约等于你的“静态资源服务器”是个缓存时间无限的 CDN ,当然就不用改现有代码;
然后因为“缓存时间无限”,所以 web 服务器定期清理也不会丢失文件了。
qwer1234asdf
2016-11-23 17:28:54 +08:00
你这,缺点跟优点是同一个。。。。怎么感觉怪怪的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/322722

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX