精华内容
下载资源
问答
  • web网站优化

    千次阅读 2016-03-04 14:46:45
    1.web前端优化 减少http次数,比如合并css javascript文件 使用浏览器缓存,静态文件设置http头Cache-Control和Expires属性。更新静态文件时,避免一次更新多个文件,应该一个文件一个文件间隔更新,避免...

    1.web前端优化

    • 减少http次数,比如合并css javascript文件

    • 使用浏览器缓存,静态文件设置http头Cache-Control和Expires属性。更新静态文件时,避免一次更新多个文件,应该一个文件一个文件间隔更新,避免用户浏览器的缓存大量失效,集中更新静态文件,造成服务器压力陡增

    • 启用压缩,文本压缩率比较高,压缩省带宽耗CPU,选择平衡点

    • css先加载,js垫底。让css文件尽早下载完开始渲染页面,避免js动作阻塞页面。HTTP2可以使用Server Push 特性,尽早推送静态资源

    • 减少cookie传输,比如静态资源使用独立域名,避免获取静态资源传输无用的cookie

    • CDN加速,花点钱,性价比高

    • 反向代理:比如nginx,很多选择

    2.应用服务器优化

    • 分布式缓存:

      不可过度依赖缓存,缓存总归是不可靠的。

      读写比小于2:1,缓存无意义。

      上线时注意缓存预热,必要时专门准备预热脚本。

      避免缓存穿透:如果因为不恰当的业务或者恶意攻击,持续高并发访问某个不存在的数据,由于缓存中没有该数据,导致压力落到数据库,简单对策,将不存在的数据也缓存起来,只是value为null

    • 分布式缓存架构简述

      Jboss Cache为代表的需要同步更新的分布式缓存,每台缓存机器数据相同,缺点是缓存的体量小,受限于单机容量。常用于企业系统,大型网站少用。

      Memcached为代表的集中式缓存集群,使用一致性hash存取数据,每台机器存储一部分数据,合起来才是缓存总量

      Memcache采用固定空间分配,将内存分为一组slab,每个slab里又分为一组chunk。不同slab的chunk大小不同,每个slab内不chunk相同,然后根据数据的size大小,选择最小的适合的slab存储,实现按需存储。所以,数据大小应该均匀分布,否则大量数据集中在个别slab,导致其他slab浪费。

    3.存储性能优化

    • 传统关系型数据库多使用两级索引的B+树,NoSQL多使用LSM。LSM写数据都会创建一个新记录(修改记录新数据值,删除打上删除标记),这些数据在内存中仍然是一个排序树,当数据量超过预定的阀值,将内存的数据与磁盘数据合并。查找先内存后磁盘。

    4. 应用服务器设计要点

    • 服务无状态:应用服务器不保存任何状态,从而每台服务器绝对对等,请求给谁都能得到相同的处理结果,负载均衡器才能故障转移,不影响业务逻辑

    • 集群环境下session管理:

      session绑定。利用负载均衡器的源地址hash算法,总是将同一个IP的请求分发给同一个应用服务器(也可以根据cookie,同一个用户的请求分发给同一个应用服务器,这个时候负载均衡器必须工作在HTTP协议层)。适合小规模,存在单点故障,某台应用服务器故障,它负责的一部分用户无法完成业务。

      利用cookie记录session,每次请求将session信息发送给服务器,服务器修改后返回session信息。缺点是:浪费带宽,有损性能;重度依赖cookie,如果客户端关闭cookie,方案失败

      推荐:独立部署session服务器集群,这种方案本质上是将有状态和无状态的应用服务器分离。session服务器利用分布式缓存等技术包装一下,存储session信息。更高级的,利用session服务器做SSO

    • 异步队列对于削峰效果显著,但是受限于业务逻辑,不是所有业务都适合异步处理

    • 设计降级机制:高峰期,关闭非核心应用或接口带来的访问,确保核心应用或接口可用。比如淘宝双十一期间,关闭“收货”,"评价"等业务,腾出资源做秒杀。

    • 幂等设计:请求某个服务成功,因为网络原因没有收到响应,会重复调用,这种重试不可避免。设计成幂等接口,调用多次无副作用。比如转账接口,必须强校验,避免重试,导致逻辑错误。

    5.几种负载均衡介绍

    • HTTP重定向负载均衡:利用HTTP协议,均衡器302返回真实的一组服务器地址,重定向机器成为瓶颈

    • DNS域名解析负载均衡:DNS中配置多个记录,比如 my.com IN A 111.1.1.1 my.com IN A 111.1.1.2等等。每次域名解析请求到来,就会根据负载均衡算法返回其中一个IP地址。缺点是DNS是多级解析,每级都可能有缓存,所以配置有变动时生效时间长;而且DNS控制权在域名服务商手里,可操作的空间有限

    • 反向代理:反向代理收到请求,根据均衡算法,将请求转发至后面真实服务器,然后将响应写回客户端。反向代理可能会成为瓶颈。

    • IP负载均衡:请求到达均衡器,均衡器在系统内核进程获取数据包,根据均衡算法,修改数据包的目的地址,同时将源地址修改为自身。从而真实服务器处理请求后,将响应写给均衡器,均衡器再返回给客户端。如果不修改源地址,则该均衡器充当真实服务器集群的网关服务器,所有的数据自然也能流经均衡器。

    • 数据链路层负载均衡:请求到达均衡器,均衡器修改数据包中的MAC地址,改为真实服务器的地址,请求转发到真实服务器,处理后,直接返回客户端。此方式又称为三角传输,由于不修改IP,需配置真实服务器虚拟IP与均衡器IP一致,请求进来通过MAC地址分发,请求出去,直接写给客户端,均衡器压力小,又称为DR,直接路由。LVS是Linux最好的数据链路层负载均衡器。

    扩展性:在对现有系统影响最小的情况下,系统功能可以持续扩展或提升。说的是功能层面的事。

    伸缩性:通过增加或减少自身资源规模(比如机器数量)来增强或减少系统的处理事务的能力。说的是系统吞吐能力层面的事。

    展开全文
  • Web 网站优化

    2013-05-16 20:34:00
    陈希章:http://www.cnblogs.com/chenxizhang/archive/2013/04/29/3050839.html    
    展开全文
  • 大型Web网站优化总结 优化三之应用服务器集群优化 应用服务器:webserver 业务和逻辑处理 应用服务器的集群定义:服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个...

    大型Web网站优化总结<二>


    优化三之应用服务器集群优化


    应用服务器:webserver 业务和逻辑处理
    应用服务器的集群定义:服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器。集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行。
    负载均衡,不仅仅能做反向代理(不是反向代理):

    请求到一个负载服务器,然后把请求分发给应用服务器,并把数据返回,所以得保持负载服务器的高可用性(keepalived)


    第一种形式(基本上被淘汰了)


    HTTP重定向负载均衡(用户发起一个请求到负载服务器(在应用服务器之前搭的,在网站的机房里),返回来一个新的IP地址,然后用户拿着新的IP去访问实际存在的服务器301永久重定向、302临时重定向【用的是这种】)

    • 2系列状态码:请求成功之类的;
    • 3系列状态码:重定向;
    • 4系列状态码:请求语法错误 ;
    • 5系列状态码:服务器错误;

        优点:搭建非常简单
        缺点:1.用户发起了两次请求,性能差 响应时间较慢
                  2.所有请求都有负载服务器分发,压力大,容易成为网站的瓶颈
                  3.重定向不利于SEO优化,可能被爬虫认为作弊(以后不爬了)
                  4.直接访问应用服务器危险性大(不安全)

    拓展知识:SEO是由英文Search Engine Optimization缩写而来, 中文意译为“搜索引擎优化”!SEO是指通过对网站进行站内优化和修复(网站Web结构调整、网站内容建设、网站代码优化和编码等)和站外优化,从而提高网站的网站关键词排名以及公司产品的曝光度。通过搜索引擎查找信息是当今网民们寻找网上信息和资源的主要手段。

    提高SEO排名方法:

    •  新鲜的(爬虫没爬过的)
    •  离百度蜘蛛近的  静态页面
    •  不挣扎的  (内容不易变的,不经常重定向的)
    • 适当的友情链接(必须有质量的,才可以)

             拓展知识:百度蜘蛛,是百度搜索引擎的一个自动程序。它的作用是访问收集整理互联网上的网页、图片、视频等内容,然后分门别类建立索引数据库, 使用户能在百度搜索引擎中搜索到您网站的网页、图片、视频等内容。


    第二种形式:DNS解析(只解决了负载服务器是本网站瓶颈的问题)


       适用于超大型网站架构
            (用户发起一个请求到负载服务器(在应用服务器之前11搭的,在网站的机房里),返回来一个新的IP地址,然后用户拿着新的IP去访问实际存在的服务器) , 其中机房里还可以再加多层负载均衡服务器
            优点:1.搭建简单
                      2.是由运营商DNS解析的,不用自己负载服务器瓶颈问题
                      3.支持按照地理位置解析,加快反应时间(例如在北京直接请求北京的站点)
                
            与第一种HTTP重定向区别:负载服务器不在机房了,在网络运营商那里  , 无论怎样都走服务运营商这条线(不易瘫痪) .
        

       第三种形式:反向代理


           原理:用户发起一个请求到负载服务器(反向代理有两个网卡,一个对内,一个对外),对外的网卡接待,然后通过计算,通知对内网卡去访问实际存在的服务器,然后web server把数据返回给内网网卡,对内网卡发送给对外网卡,最后负载把数据返回给用户
            缺点:简答:(反向代理会成为中转站,可能成为瓶颈)
            1.两个网卡,一个对外,一个对内,因此在并发连接请求数量非常大的时候,代理服务器的负载也就非常大了,在最后代理服务器本身会成为服务的瓶颈
            2.反向代理是处于OSI参考模型第七层应用的,所以就必须为每一种应用服务专门开发一个反向代理服务器,这样就限制了反向代理负载均衡技术的应用范围,现在一般都用于对web服务器的负载均衡。
            

       第四种形式:IP负载均衡


        原理:用户发起一个请求到负载服务器(通过计算解析成IP地址),然后根据真实的物理地址去访问实际存在的服务器,然后web server把数据返回给负载服务器,最后负载把数据返回给用户
           缺点:网卡和带宽容易成为瓶颈
            
        三四的优点:
            优点:1.相对安全(用户不能直接访问web服务器)
                      2.效率提高
                      3.部署简单
                      4.提升了静态页面的访问速度
        
       

    第五种形式:数据链路层均衡负载(相对于三四的优化)


            请求时走负载,返回不走负载(通过数据链路层返回数据)
            用户发起一个请求到负载服务器(通过计算解析成IP地址或通过网卡解析--还是三四的步骤),然后去访问服务器,然后web server直接把数据返回给用户(不走负载)
            
            LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是从软件方面搭建负载均衡
            F5 公司是应用交付网络(ADN)领域的全球领先厂商,从硬件方面的搭建负载均衡服务器


          当然 , 优化方式有很多种 , 我们要根据实际的业务和需求场景 , 去选择优化方式 , 小公司一味地去最求大公司的 , 可能会将网站引入崎岖小道 , 后期的架构也会越走越难 . 大公司的经验和成功模式固然重要 , 值得学习借鉴 , 但是我们不能盲从的去追求 , 要根据自己网站的业务去选择适合技术 .


     以上个人建议 , 仅供参考 , 如有不对 ,请博友们指正 .


    负载均衡常用算法
    链接 : http://blog.csdn.net/ruziwang/article/details/79084087






    展开全文
  • web 网站优化分析

    2016-07-28 10:54:32
    这里的web系统优化是指网站系统优化,之前一直认为网站系统的优化方面能做的应该是很少的,因为在我过去的认知里,网站是运行在服务器软件(常见的Tomcat)上,服务器软件完成了用户请求的获取,并交给自己的网站,...

    这里的web系统优化是指网站系统优化,之前一直认为网站系统的优化方面能做的应该是很少的,因为在我过去的认知里,网站是运行在服务器软件(常见的Tomcat)上,服务器软件完成了用户请求的获取,并交给自己的网站,再由网站处理,整体流程就是这样,当时认为若要优化的话应该从请求的转发过程处理(如果转发快了,系统自然就快了),但是这部分已经被服务器软件处理了,作为一般的程序员根本就处理不了请求转发的过程。但是由于时间的积累,发觉自己之前的优化点找错了,原因是:请求转发过程的确要优化,但是这个不是网站开发者做的,而是服务器软件开发者(以Tomcat为例,请求转发的优化应该由Tomcat 维护者处理)。而作为网站开发者要优化的地方应该是自己网站内部的实现,针对网站的运营要求(是否会存在高并发(同一时刻有大规模的用户访问网站)的情景)。

    同一时刻大规模用户访问网站具体可分为以下几个场景:

    1.   只是访问某个静态(不操作数据库的)页面(这种情况网站开发者是不需要优化的,因为这个仅涉及请求的转发和结果的返回,是服务器维护者该优化的,网站开发者是无法处理的,一般默认现有服务器的请求转发和结果返回的优化已经处理了的)。

    2.   访问某个动态(有数据库操作)页面(这种情况就得对数据库操作进行优化了,优化分为两个层次,一。常规优化(避免内存泄漏,内存溢出,多线程数据安全问题);二。在处理完常规优化的基础上,提高数据库访问速度(主要是使用内存级别的访问方式,但是这样的话又得做好别的防护,主要是和线程安全相关)。)

    特别说一下多线程数据安全问题,要保证多线程安全就必须保证线程的有序性。关于更多的线程安全问题,笔者转了一篇博客相当到位的介绍了线程安全,点击可看

    当然前面的仅仅是常规网站开发方面,但是某些特殊情况下得使用特殊方法开发,举个例子可能有一个网站面向的是全球用户,而且用户会从网站上下载某些文件,这种情况下如果使用常规开发,由于不同的国家地区访问当地服务器是有快有慢的,这样下载速度就没法保证,解决这种问题的话就得使用分布式的方法存储了,一开始请求核心服务器,到下载文件时就下载距离用户较近的服务器上的文件这样子就可以保证下载速度了,但这样的话成本控制就得好好考虑了,但是如果使用常规方法,就得增加带宽,提升性能,可能可以提示效果,但是效果可能不明显。如果使用分布式的存储方式的话,就得处理好数据备份、同步更新及数据恢复问题了。数据备份是指将核心服务器上的数据库备份到非核心服务器上,同步更新是指当核心服务器上数据变了,备份服务器的也要变。数据恢复是指由于某些突发原因导致数据失效,就得从好的服务器上恢复过来。要特别留意的是这些操作发生的时机和控制这些操作发生规模,否则会导致系统瘫痪的,下面以数据恢复为例子,分析一下可能会出现的情况。

    数据恢复在分布式存储系统里叫副本修复,如果在一段较短时间内发生大规模的副本恢复,这时候就可能导致系统瘫痪,这叫雪崩效应,雪崩效应的应对方法有两种,一种是特定时间内发生大雪崩,就是将副本恢复操作集中在一个时间段执行,这段时间就提前说明在系统维护,网站不能访问。这样就可以做到在雪崩来之前疏散人群,减少损失。这样的好处是简单粗暴,但是用户体验很差。另外一个做法就是严格控制副本恢复的规模,使之形不成雪崩,这样必须知道雪崩形成条件,但是这个条件是随当前网站的访问量变化的当访问量多时雪崩条件就低,反之访问量少时,条件就高,所以这个条件有两种方式设定,一种是静态设定(这种编程复杂度较低,但是不够灵活,不能完全避免雪崩),另一种是动态设定(这种可以完全避免雪崩,但是难度稍复杂)。

    最后,总结一下,关于网站优化,一个是常规网站优化(分为常规优化(内存泄漏)和高并发优化(多线程安全,提升速度(数据库访问优化)))。另一种是非常规网站优化,在处理了常规网站优化后,可能还要涉及分布式存储的问题。网站一旦涉及高并发,就一定会涉及多线程安全问题,所以笔者还是强烈推荐自己转的一篇文章,点击这里,你会有所得的。

    展开全文
  • 大型Web网站优化总结<一>

    千次阅读 2018-01-16 13:14:39
    大型的网络网站优化总结 我们先说大型网站都具备哪些特点: 高并发,大流量高可用海量数据用户分布广泛,网络情况复杂安全环境恶劣需求快速变更,发布频繁渐进式发展 网站性能是决定我们如何...
  • 当我们在浏览器地址栏中输入一个URL的时候,网页开始请求,我们在页面上看到的内容就是许多个HTTP请求从服务器返回的数据展示,这些展示的快慢很大程度依赖前端的优化,怎样做好前端的优化,我这里总结了几点: ...
  • 在大部份情况下我们的网站都会使用数据库作为站点数据存储的容器。 当你执行一个SQL查询时,典型的处理过程是:连接数据库->准备SQL查询->发送查询到数据库->取得数据库返回结果->关闭数据库连接。 很明显,当...
  • 高并发WEB网站优化方案--转载

    千次阅读 2018-05-14 16:23:19
    因为对于我们的服务器,我们应该知道我们的服务器最大承受多少QPS,而我们的网站一天多少PV,那么计算出来整个峰值的QPS,那么可以根据需要来优化,并不是感觉访问量大了才优化,是需要依据的! 测试出最大能够承受...
  • 网站优化负责人的新书: 1. 减少HTTP请求 2. 采用CDN 3. 加入Expires HTTP头 4. Gzip压缩 5. CSS放在顶部 6. JS放在底部 7. 避免CSS表达式 8. 将CSS和JS放到外部文件 9. 减少DNS查询 10. 缩减JS尺寸 11...
  • 大型web网站优化方案

    2009-03-04 15:04:00
    页面伪静态化(主要利于搜索引擎的优化,seo等) javascript代码片段放在页面代码的最后面 css文件要在页面代码前面加载(一般放在head标签里面),css文件的代码尽量要精简 建立图片服务器(与程序服务器分离),...
  • 网站优化负责人的新书: 1. 减少HTTP请求 2. 采用CDN 3. 加入Expires HTTP头 4. Gzip压缩 5. CSS放在顶部 6. JS放在底部 7. 避免CSS表达式 8. 将CSS和JS放到外部文件 9. 减少DNS查询 10. 缩减JS尺寸 11. 避免重定向 ...
  • 参考:https://developer.yahoo.com/performance/rules.html#css_expressions css表达式在IE8之后就不再支持,对现在的网站性能优化已经没有特别的指导意义了。
  • 重定向的类型:当web服务器向浏览器返回一个重定向时,响应中就会包含一个3xx的状态码,表示用户代理必须进一步操作才能完成请求,下面是几种状态码: • 300 Multiple Choices (based on Content-Type) • 301...
  • 1 精简压缩 精简是从代码中移除空格注释等不必要的字符以... 混淆是另外一种优化方式,不仅会移除不必要的代码,还会修改代码本身,函数和变量名字被转换为更短的字符串,这使得代码更精简且难以阅读和调试,这样...
  • web服务器使用Expires头来通知web客户端它可以使用当前已cache的组件直到时间超期。http规范中是这么描述的:the date/time after which the response is considered stale.由http响应发送给客户端 Expires: Th...
  • 从HTTP/1.1开始,web客户端在http请求... 如果服务器看到这个请求,就可以用客户端给定列表里面的压缩方法压缩响应数据,web服务器使用响应头Content-Encoding来通知客户端Content-Encoding: gzip。Gzip是目前最流行...
  • 参见:https://developer.yahoo.com/performance/rules.html#cacheajax
  • 参见:https://developer.yahoo.com/performance/rules.html#js_dupes 显而易见,重复的脚本,增加了http请求数,移除重复脚本可以提高网站性能
  • 总所周知:终端用户响应时间只有10-20%的时间是用来下载html页面,而80-90%的时间消耗在下载各种页面组件上,所以尽可能的减少http对服务器的请求是有效提高网站性能的方法之一 这些包括图像、脚本、css文件,flash...
  • 在页面渲染时,js跟css渲染时的顺序恰好相反,浏览器会先下载js脚本,然后再下载js脚本后面的组件,这样渐进式渲染会阻塞脚本下面的所有元素,将脚本移到页面底部的方式可以解决这个问题。 如下图所示,js下载...
  • Web网站性能优化

    2017-03-22 16:08:08
    来源: 网站优化 14条–雅虎十四条优化原则YaHoo Web优化的14条法则前端工程与性能优化1. 尽可能地减少HTTP的请求 content 2. 使用CDN server 3. 添加Experes/cache-control头 server 4. Gzip组件 server
  • web网站性能优化

    2018-07-10 19:03:00
    1 web前端的性能优化 1.1浏览器访问优化 1.1.1 监测http请求  主要手段:合并css,js,图片 1.1.2 使用浏览器缓存  主要手段:缓存css,js,logo;当静态文件变化时,应该批量更新,集中更新缓存,造成服务器负载...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,698
精华内容 3,079
关键字:

web网站优化