【OSS最佳实践】WEB站点中如何应用OSS产品

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: OSS提供了海量、安全、低成本、高可靠的云存储服务,用户可以通过SDK、API、OSS相关工具等在WEB端应用集成OSS。OSS的优势在于:OSS服务器性能较好,OSS单个bucket存储空间大小不限制,OSS单个bucket出入带宽限制5Gb以上(故大部分情况下,上传下载速度是取决于客户端的带宽)。

WEB站点应用OSS分为:源静态资源上传至OSS、WEB端集成OSS实现资源上传、WEB端应用OSS资源;

1. 源数据上传至OSS

将WEB站点中的静态资源上传至OSS,上传资源可以通过SDK、API或者相关工具进行上传;
1) SDK/API 上传方式(需要代码基础):在web 服务器上调用sdk 或者api 读取站点目录下的静态资源,一个个调用putobject接口进行上传资源。
2) OSSimport迁移(推荐):在站点服务器上部署OSSimport工具进行迁移数据,OSSimport支持增量数据迁移,并且配置简单方便,但是需要JAVA环境;
3)OSSfs: 安装OSSfs,挂载待上传的bucket,通过命令cp 资源到bucket中,缺陷为OSSfs挂载bucket的稳定性需要客户自己保障,并且OSSfs挂载bucket的性能由于走的是http协议,性能相对不理想;
4) 第三方工具:客户也可以在云市场上寻找一些第三方工具进行数据迁移至OSS;

参考链接如下:
SDK:SDK
API: API
OSSimport配置文件说明:OSSimport配置
OSSimport安装看:OSSimport安装
OSSfs: OSSfs

2.WEB端集成OSS,实现资源上传

WEB集成OSS实现资源上传,可以通过如下几种方式进行:WEB端集成OSS SDK/API实现资源直传至OSS、WEB端上传资源至服务器端,服务器端集成OSS SDK上传资源至OSS、通过OSSftp工具上传资源至OSS等;

1) WEB端集成OSS的SDK(推荐)

WEB端集成OSS的SDK实现资源直传至OSS,并且服务器端联动更新站点的应用内容。WEB端可以集成OSSWEB直传回调demo、JS SDK、自己实现JS API封装来实现直传资源至OSS;

I) OSS WEB直传回调demo(推荐)

改造Web 站点上传资源部分的代码,集成web直传回调demo,web端直传资源至OSS,OSS接到对应的上传请求,存储数据,并且将文件相关的信息回调给web 服务器,web 服务器记录相关的文件信息(可以是数据库记录对应上传的uid,bucketname,objectname,endpoint等信息)联动更新web 站点,显示对应object的链接;web 直传回调的业务逻辑示例如下:
1

缺陷:采用post 请求上传资源,目前没有分块上传的demo,得客户自己二次开发实现下;

II) JS SDK

改造Web 站点上传资源部分的代码,集成OSS JS SDK,通过JS SDK上传资源至OSS;业务逻辑可以为:客户端发起上传请求,web 端请求web 服务器获取得到对应的临时ak,sk,token/子账户的ak,sk ,进行初始化client,调用put object接口进行上传资源;

缺陷:如果调用子账户或者主账户ak,sk进行初始化client,账户很可能会存在安全风险;并且目前js sdk 不支持回调,这样的方式不能很好的实现业务服务器联动;

III) JS API封装

改造Web 站点上传资源部分的代码,通过JS封装OSS上传object的API接口实现资源直传至OSS,封装api 构造上传object的请求,需要获取签名,获取签名可以请求业务服务器端获取,保证access key id安全性;同时JS 封装API可以实现下回调逻辑,将上传资源的相关信息回调给业务服务器,业务服务器实现相关联动;

缺陷:需要一定开发基础,并且有一定开发工作量

2) 服务器端集成OSSSDK

原有的Web端上传逻辑不变,上传资源至服务器端,但服务器端增加上传逻辑,调用OSSSDK上传对应的资源至OSS。
缺陷:上传通过Web服务器中转,消耗了服务器的性能及带宽,并未充分利用OSS的优势,服务器端的性能及带宽瓶颈会成功业务瓶颈;

3) OSSftp实现资源上传至OSS

在一台有公网的服务器上部署OSSftpserver,测试通过使用FileZilla客户端去连接FTP server成功后,对应的站点参考OSSftp文档进行FTP配置,实现资源上传至OSS。
缺陷:OSSftp目前仅支持Discuz论坛、phpwind论坛、Wordpress等个人网站的应用,业务量较大的站点不推荐使用该方式集成;

参考链接如下:
OSSftp安装部署
Discuz配置
phpwind论坛配置
Wordpress配置

3. WEB端应用OSS资源

Web端应用OSS资源可以通过如下几种方式进行:Web应用的静态资源url链接直接替换为OSS object的url链接、Web端的页面引用的链接不进行任何改造,通过反向代理配置,静态资源请求定位到OSS上、Web端的页面引用不进行任何改造,直接ossfs挂载使用OSS资源等;

1) 直接应用objecturl链接

客户可以将站点中的全部静态资源链接替换为OSS中对应object的url链接。

I) 为bucket绑定自定义域名并且开启cdn加速(可选,但是推荐),参考:[cdn加速oss]
II) 更新WEB站点中静态资源的URL链接
将WEB站点中的静态资源url链接全部替换为OSS object的URL链接;OSSobjecturl链接获取:object公共读,那么直接通过bucket域名/objectname 即可拼接得到url;object私有,那么客户的web 站点得集成OSS的SDK或者API动态更新对应资源的url链接:[签名URL获取];

缺陷:OSS目前还不支持安全防护功能,如果存在恶意客户刷取客户静态资源,可能会产生大流量费用,但是OSS结合阿里云安全产品可以进行安全防护,详细看OSS异常流量排查及防护

2) WEB端反向代理应用OSS资源

客户可以将站点中静态资源对应的域名绑定bucket,将对应的静态资源目录反向代理到OSS上,访问oss的资源;

I) 为bucket绑定静态资源域名,静态域名仍然解析至站点服务器端,bucket绑定域名

II) 在web 站点服务器上进行反向代理配置,将静态目录反向代理到oss上,应用OSS资源,如果对应的web 站点服务器是ECS,并且与OSS同区域,那么反向代理的OSS域名可以是内网域名。

缺陷:Web端访问静态资源的速度及并发数限制取决于代理服务器的性能、带宽及nginx服务器的并发数限制;该配置用户可以在代理服务器上做相关的安全策略,可以规避一定的恶意客户刷流量行为。

3) WEB服务器通过OSSfs挂载应用OSS资源(不推荐)

客户Web端不做任何的改造,Web服务器直接通过ossfs挂载bucket,Web访问的资源直接访问挂载目录的资源;

缺陷:ossfs挂载资源性能相对较差,并且ossfs 挂载bucket的稳定性客户得业务端设置对应的监控保证挂载正常,故不推荐使用。

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
19天前
|
测试技术 持续交付 PHP
PHP在Web开发中的应用与最佳实践###
【10月更文挑战第25天】 本文将深入探讨PHP在现代Web开发中的应用及其优势,并分享一些最佳实践来帮助开发者更有效地使用PHP。无论是初学者还是有经验的开发者,都能从中受益。 ###
40 1
|
1月前
|
Web App开发 前端开发 网络性能优化
Web网页端IM产品RainbowChat-Web的v7.2版已发布
RainbowChat-Web是一套Web网页端IM系统,是RainbowChat的姊妹系统(RainbowChat是一套基于开源IM聊天框架 MobileIMSDK (Github地址) 的产品级移动端IM系统)。
35 1
|
2月前
|
负载均衡 Java 对象存储
负载均衡策略:Spring Cloud与Netflix OSS的最佳实践
负载均衡策略:Spring Cloud与Netflix OSS的最佳实践
49 2
|
2月前
|
前端开发
【前端web入门第五天】03 清除默认样式与外边距问题【附综合案例产品卡片与新闻列表】
本文档详细介绍了CSS中清除默认样式的方法,包括清除内外边距、列表项目符号等;探讨了外边距的合并与塌陷问题及其解决策略;讲解了行内元素垂直边距的处理技巧;并介绍了圆角与盒子阴影效果的实现方法。最后通过产品卡片和新闻列表两个综合案例,展示了所学知识的实际应用。
59 11
|
1月前
|
监控 安全 Apache
构建安全的URL重定向策略:确保从Web到App平滑过渡的最佳实践
【10月更文挑战第2天】URL重定向是Web开发中常见的操作,它允许服务器根据请求的URL将用户重定向到另一个URL。然而,如果重定向过程没有得到妥善处理,可能会导致安全漏洞,如开放重定向攻击。因此,确保重定向过程的安全性至关重要。
71 0
|
2月前
|
Web App开发 编解码 前端开发
构建响应式Web应用的最佳实践
构建响应式Web应用的最佳实践
49 0
|
3月前
|
安全 前端开发 PHP
构建与验证表单:传统PHP与Laravel框架的比较分析——探索Web开发中表单处理的优化策略和最佳实践
【8月更文挑战第31天】在 Web 开发中,表单构建与数据验证至关重要。传统 PHP 方法需手动处理 HTML 表单和数据验证,而 Laravel 框架则提供了一种更现代、高效的解决方案。本文通过对比传统 PHP 和 Laravel 的方法,探讨表单构建与验证的最佳实践。Laravel 通过简洁的语法糖、内置的数据过滤和验证机制,显著提升了代码的安全性和可维护性,适用于大型项目或需要快速开发的场景。然而,在追求灵活性的小型项目中,直接使用 PHP 仍是不错的选择。了解两者的优劣,有助于开发者根据项目需求做出最佳决策。
38 0
|
3月前
|
前端开发 JavaScript 大数据
React与Web Workers:开启前端多线程时代的钥匙——深入探索计算密集型任务的优化策略与最佳实践
【8月更文挑战第31天】随着Web应用复杂性的提升,单线程JavaScript已难以胜任高计算量任务。Web Workers通过多线程编程解决了这一问题,使耗时任务独立运行而不阻塞主线程。结合React的组件化与虚拟DOM优势,可将大数据处理等任务交由Web Workers完成,确保UI流畅。最佳实践包括定义清晰接口、加强错误处理及合理评估任务特性。这一结合不仅提升了用户体验,更为前端开发带来多线程时代的全新可能。
73 1
|
3月前
|
Java 开发者 JavaScript
Struts 2 开发者的秘籍:隐藏的表单标签库功能,能否成为你下个项目的大杀器?
【8月更文挑战第31天】Struts 2表单标签库是提升Web页面交互体验的神器。它提供丰富的标签,如`<s:textfield>`和`<s:select>`,简化表单元素创建与管理,支持数据验证和动态选项展示。结合示例代码,如创建文本输入框并与Action类属性绑定,显著提升开发效率和用户体验。通过自定义按钮样式等功能,Struts 2表单标签库让开发者更专注于业务逻辑实现。
47 0
|
3月前
|
Java 测试技术 容器
从零到英雄:Struts 2 最佳实践——你的Web应用开发超级变身指南!
【8月更文挑战第31天】《Struts 2 最佳实践:从设计到部署的全流程指南》深入介绍如何利用 Struts 2 框架从项目设计到部署的全流程。从初始化配置到采用 MVC 设计模式,再到性能优化与测试,本书详细讲解了如何构建高效、稳定的 Web 应用。通过最佳实践和代码示例,帮助读者掌握 Struts 2 的核心功能,并确保应用的安全性和可维护性。无论是在项目初期还是后期运维,本书都是不可或缺的参考指南。
50 0