中大型网站静态资源优化及存储
为什么80%的码农都做不了架构师?>>>
静态资源优化:
合并
减少http请求有这样几个优点:
(1) 减少DNS请求所耗费的时间
(2) 减少服务器压力(CPU,IO)
(3) 减少http请求头(当我们对服务器发起一个请求的时候,我们会携带着这个域名下的cookie和一些其他的信息在http头部里,然后服务器响应请求的时候也会带回一些cookie之类的头部信息.这些信息有的时候会很大,在这种请求和响应的时候会影响带宽性能)
合并请求:
lvmama首页
<link rel="stylesheet" href="http://s1.lvjs.com.cn/min/index.php?f=/styles/v6/header.css,/styles/v6/index.css" >
gewara首页
<link rel="stylesheet" type="text/css" href="http://static5.gewara.com/css/gewara.css?n=ui_layout,index_new&v=2014070214"/>
压缩
gzip压缩传输能更加有效节约带宽流量。他先把文本压缩为.gz然后传输给浏览器,最后由浏览器负责解压缩呈现给用户。
初期,动态,静态资源在同一个服务器上,保持原有的目录结构
为什么将静态图片,js,css存放到单独的域名?
使用单独域名,浏览器不会把主域名下的 cookie 传给该域,减少了网络开销,一定程度提高了页面加载速度。
打开lvmama首页(动态请求):
首页静态资源请求:
从两张图中我们得出结论:
http://www.lvmama.com 下有cookie
http://s1.lvjs.com.cn 无cookie
采用动静分离
动静分离,就是将 Web 应用程序中静态和动态的内容分别放在不同的 Web 服务器上,有针对性的处理动态和静态内容,从而达到性能的提升。
分离后:
一个图片请求:http://s1.lvjs.com.cn/pics/super/2014/06/S72XK.jpg
对应linux存储目录可能是这样:
var/www/super/2014/06/S72XK.jpg
var/www/super/2014/06/S73XK.jpg
var/www/super/2014/06/S71XK.jpg
var/www/super/2014/06/.........
var/www/super/2014/..../......
var/www/super/........./..../......
var/www/.........../........./..../......
啥问题?
数据内容以几何级数增长,尤其是那些小文件,几K到几百K不等,数量巨多,传统的文件系统处理起来很是吃力,这样的问题:
(1)磁盘IO过高
海量文件检索效率低,由于现有的存储系统无法有效管理海量小文件,并且在单个目录下存放文件的数量有一定的限制,一旦文件数到达了一定规模之后,文件的检索速度就急剧下降。
当前用户只能通过多级目录来组织存放大量的小文件,随着目录深度的增加,文件的检索开销进一步增大,检索效率随之下降(大量的磁盘寻址)。
(2)备份困难
(3)单点问题,容量和读写无法水平扩展,还存在故障的可能
现有的存储系统一旦出现连续的磁盘故障或者服务器失效的情况,将会立即中断应用的读写过程,严重的甚至造成数据丢失。
小文件的备份速度极慢,而备份大量小文件将会耗费大量的时间和系统资源。
用户在存储大量小文件时不得不采用了费时费力的方式,将文件复制多份到多套的存储系统中以提高安全性。
怎么办?
分布式文件系统(Distributed File System)
指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。
(1)扩展能力: 是一个分布式文件系统最重要的特点。
(2)高可用性: 在分布式文件系统中,高可用性包含两层,一是整个文件系统的可用性,二是数据的完整和一致性。
(3)协议和接口: 分布式文件系统提供给应用的接口。
(4)弹性存储: 可以根据业务需要灵活地增加或缩减数据存储以及增删存储池中的资源,而不需要中断系统运行。弹性存储的最大挑战是减小或增加资源时的数据震荡问题。
(5)压缩、加密、去重、缓存和存储配额: 这些功能的提供往往考验一个分布式文件系统是否具有可扩展性,一个分布式文件系统如果能方便的进行功能的添加而不影响总体的性能,那么这个文件系统就是良 好的设计。存储配额就是可以为应用所能使用的存储空间进行配额限制,比如每一应用只能使用最大配额范围内的存储空间。
目前方案
GridFS
GridFS是MongoDB之上的分布式文件系统,其利用了MongoDB的分布式存储机制并通过MongoDB来存储文件数据和文件元数据,兼具文档型数据库和文件系统的优势。
MongoDB是一个基于分布式文件存储的数据库开源项目。由C++语言编写。旨在为WEB应用提供可护展的高性能数据存储解决方案。
它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:
*面向集合存储,易存储对象类型的数据。
*模式自由。(schema-free)
*支持动态查询。
*支持完全索引,包含内部对象。
*支持查询。
*支持复制和故障恢复。
*使用高效的二进制数据存储,包括大型对象(如视频等)。
*自动处理碎片,以支持云计算层次的扩展性
*支持RUBY,PYTHON,JAVA,C++,PHP等多种语言。
*文件存储格式为BSON(一种JSON的扩展)
*可通过网络访问
最后选型:
Load balancing-->Nginx
Cache-->Squid
GlassFish-->Java Web Image Server Application(Spring MVC,Spring data for MongoDB)
Storage-->GridFS (a mechanism for storing large binary files in MongoDB)
关于 Image Server Application
需求:
等比例缩略图:
http://img5.gewara.com/cw120h160/images/movie/201405/s2800beec_14638bfd918__7ec5.jpg
cw120h160这里
支持大图缩略功能.
参考:
网站性能优化组定义的34条准则--Yahoo!
Best Practices for Speeding Up Your Web Site (https://developer.yahoo.com/performance/rules.html)
Java Web 高性能开发(http://www.ibm.com/developerworks/cn/java/j-lo-javawebhiperf2/)
MongoDB GridFS最佳应用概述 (http://blog.csdn.net/chszs/article/details/20123327)
转载于:https://my.oschina.net/bobotc/blog/531764
中大型网站静态资源优化及存储相关推荐
- nginx 静态资源优化配置
前言 在很多公司,nginx不仅作为反向代理服务器使用,而且承载着一部分静态资源存储的功能,比如将图片等静态资源放在nginx目录下,比较熟悉的是,在一些前后端分离的网站中,某些情况下,为了能充分提升 ...
- [sql]大型网站MySQL深度优化揭秘
大型网站MySQL深度优化揭秘 第1章优化的思路和线路 1.1 网站优化的思路 2 1.2 MySQL优化,nginx这样的东西怎么优化? 第2章硬件层面优化 2.1 数据库物理机 2.1.1 ...
- springboot 请求路径有后缀_SpringBoot中配置Web静态资源路径的方法
介绍: 本文章主要针对web项目中的两个问题进行详细解析介绍:1- 页面跳转404,即controller转发无法跳转页面问题:2- 静态资源文件路径问题. 项目工具: Intelij Idea, J ...
- Nginx静态资源优化配置之sendfile
静态资源优化配置语法 Nginx对静态资源如何进行优化配置.这里从三个属性配置进行优化: sendfile on; tcp_nopush on; tcp_nodeplay on; (1)sendfile ...
- 关于大型网站技术演进的思考--存储的瓶颈
(一)第一部分 前不久公司请来了位互联网界的技术大牛跟我们做了一次大型网站架构的培训,两天12个小时信息量非常大,知识的广度和难度也非常大,培训完后我很难完整理出全部听到的知识,今天我换了个思路是回味 ...
- 中大型网站架构演变之路
前言 网上有很多文章类似于我今天要分享的课程,有架构师写的,有运维写的,还有开发些的,偏重点都不同,今天我以咱们运维角度全面讲解. 一个成熟的网站架构并不是一开始设计就具备高可用.高伸缩.高性能等特性 ...
- Nginx静态资源优化、压缩、缓存
这一篇记录一下Nginx压缩缓存相关的指令,各位看到此博客的小伙伴,如有不对的地方请及时通过私信我或者评论此博客的方式指出,以免误人子弟.多谢! 目录 优化 sendfile tcp_nopush tc ...
- 电商静态资源图片等存储方式以及CDN加速
参考链接:http://www.cnblogs.com/wangtao_20/p/3440570.html 以下为简略版 商品图片,用户上传的头像,其他方面的图片.目前业界存储图片有两种做法: 1. ...
- 中大型网站技术架构演变过程
1.大型网站的特点 高并发,大流量:PV量巨大.即页面浏览量:用户每1次对网站中的每个网页访问均被记录1次.用户对同一页面的多次访问,访问量累计. 高可用:7*24小时不间断服务. 海量数据:需要储存 ...
最新文章
- 背水一战 Windows 10 (40) - 控件(导航类): AppBar, CommandBar
- Solaris 默认Shell 修改
- RHEL各版本的XManager4远程配置
- 计算机科学与技术专家报告内容,计算机科学与技术专业设计报告大学内容.docx...
- UVA10785 The Mad Numerologist
- 西工大java高级网络编程_奥鹏西工大16春《JAVA高级网络编程》平时作业
- 十年积累,5.4万GitHub Star一朝清零:开源史上最大意外损失
- Hive 外部表关联分区数据
- 【OJ】洛谷排序题单题解锦集
- 11月热门下载资源TOP100强力推荐!
- html标记语言 --超链接
- win10计算机百度云盘,windows10系统中怎样安装百度云盘?
- 录屏并制作动图gif的方法
- 最新29刷网课平台系统源码+带教程
- 在cmd指令看计算机位数,如何判断电脑是32位还是64位
- BMVC-2021-DETR: End-to-End Object Detection with Transformers 阅读笔记
- PMP培训第一次听课笔记(第1-3章)
- 马哥教育SRE笔记【作业】week02
- 【转载】java版打字练习软件
- 今日头条文章爬虫实战
热门文章
- linux服务器每秒并发处理数的计算方法
- mathematica趣题解答
- How to reduce Index size on disk?减少ES索引大小的一些小手段
- 使用Python制作一个简单的刷博器
- apu和atom处理器两者的定位
- cocos2d-x自制工具03:AnimatePacker for Mac/Win32 v1.1 Build1发布!
- 数字证书中keytool命令使用说明
- Mocha BSM产品亮点——关联事件分析
- Bitsocket——BCH实时API,为BCH带来无限可能
- SQL-16 统计出当前各个title类型对应的员工当前薪水对应的平均工资。结果给出title以及平均工资avg。...