通过设置Http头中的Cache-和的属性。静态资源的更新不要直接更新文件内容,要通过更改文件名的方式更新。更新讲台资源的时候使用逐量更新。
使用GZIP压缩,在服务端对文件进行压缩,在浏览器端对文件解压缩可以减少通信传输的数据量。但是该种方式会对服务器产生一定的压力,在款低啊良好而服务器资源不足的情况下要权衡考虑。
浏览器会在下载完全部的CSS之后才会对页面进行渲染,所以最好的方式是把CSS放在页面最上面;但是JS则相反(如果页面解析时就要用的js还是要放在最上面)。
比如用户的登录信息,可以考虑使用拦截器,在用户登录的时候把登录信息和用户的相关信息存放在里面。
CDN的本质就是把资源放在离用户最近的地方,CDN能够缓存的一般是静态资源,如图片、文件、CSS、js脚本,静态网页。
反向代理服务器的两个用途:
①保护网站安全;
②配置缓存功能可以加速web请求;
③负载均衡,可以提高网站的并发数
后台服务器常用的优化方式
缓存相关知识
后台性能优化的第一定律:优先考虑使用缓存优化性能。
缓存的本质
缓存的本质就是一个内存Hash表,数据以一对Key\Value键值对存储在内存Hash表中。主要用户存放读写比很高、很少变化的数据,网站数据通常遵循“二八定律”,即80%的访问落在20%的数据上,因此,将这20%的数据缓存起来,可以很好的改善系统性能。
合理的使用缓存
合理的使用缓存对提高系统性能有很多好处,但是不合理的使用缓存反而会成为系统的累赘甚至风险。滥用缓存的三种情况如下:
数据的读写比至少应该是2:1以上,即写入一次缓存,在数据更新前至少读写两次,缓存才有意义。真正实践中这个比例可能会更高。
如果应用系统访问数据没有热点,不遵循二八定律,即大部分数据访问并没有集中在小部分数据中,那么缓存也没有意义,因为大部分数据还没有被再次访问就已经被挤出缓存了。
写入缓存的数据最好能容忍一定时间的数据不一致,一般情况下最好对缓存的数据设置失效时间(固定值+一定范围的随机值)。如果不能容忍数据的不一致,必须在数据更新时,删除对应的缓存(思考:为什么不是更新缓存),但是这种情况只针对读写比非常高的情况。
缓存的常见问题优化手段
缓存雪崩我们可以简单的理解为:由于原有缓存失效,新缓存未到期间(例如:我们设置缓存时采用了相同的过期时间,在同一时刻出现大面积的缓存过期),所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整个系统崩溃。
该类问题的解决方式主要有三种:
①加锁排队。大概原理是在去数据库取数据的时候加锁排队,该方法仅仅适用于并发量不高的情况。
②在原有失效时间基础上加一个合理的随机值(0-5分钟)。分布式场景下最常见的方式(单机也可以)。
③给缓存加标记,在缓存失效之后更新缓存数据。
缓存穿透是指用户查询数据,在数据库没有,自然在缓存中也不会有。这样就导致用户查询的时候,在缓存中找不到,每次都要去数据库再查询一遍,然后返回空(相当于进行了两次无用的查询)。
该类问题的主要解决方式。
①使用布隆过滤器做过滤。该方法仅仅用于查询一个不可能存在的数据。
②把不存在的数据也缓存起来。最佳实践:单独设置比较短的过期时间网站优化,比如说五分钟。
缓存中存放的是热点数据,热点数据又是缓存系统利用某种算法对不断访问的数据筛选淘汰出来的,在重建缓存数据的过程中,系统的性能和数据库负载都不太好,那么多好的方式就是在缓存系统启动的时候就把热点数据加载好,这个缓存预加载的手段叫做缓存预热。对于一些元数据如省市区列表,类目信息,就可以在启动的加载数据库中的全部数据。
分布式缓存架构
分布式缓存是指缓存部署在多个服务器组成的集群中,以集群方式提供缓存服务,其架构方式有两种:
①以 Cache为代表的需要更新同步的分布式缓存(在所有服务器中保存相同的缓存数据)。
②以为代表的互不通信的分布式缓存(应用程序通过一致性Hash等路由算法选择缓存服务器远程访问远程数据,可以会容易的扩容,具有良好的可伸缩性)。
异步
使用异步操作,可以大幅度改善网站的性能,使用异步的两种场景,高并发、微服务;
①高并发,在不使用消息队列的情况下,用户的请求数据直接写入数据库,在高并发的情况下会对数据库造成一定的压力,同时也使得响应延迟加剧。使用消息队列具有很好的削峰作用,在电子商务网站促销活动中,使用消息队列是常见的技术手段。
②微服务之间调用网站优化,在微服务流行的当下,有时候我们调用其他系统的微服务接口,只是为了通知其他系统,我们不关心结果,这个时候我们可以使用单独的线程池异步调用其他系统的微服务,这样可以减少程序的响应时间。
任何可以晚点的事情都应该晚点再做。
集群
在网站高并发访问的场景洗下,使用负载均衡技术为一个应用构建一个由多台服务器组成的服务器集群,可以避免单一服务器因负载压力过大而响应缓慢。常用的负载均衡技术有以下几种:
*请认真填写需求信息,我们会在24小时内与您取得联系。