网站优化的一些方法

写在前面

年初Django开发的网站项目初版已经上线,由于需求变更太大,因此想按照先后端分离的方式早点推重构再优化,可是时间又不容许,因此就先作初版的优化,重构的事并行,之后考虑迁移数据。css

关于静态文件

  1. 压缩js/css文件。
    咱们使用gulp来压缩js/css文件。python

  2. 静态文件所有迁移到七牛云存储里面。
    原来的静态文件直接放在服务器里,首页图片比较多,以前测试服务器加载完首页js/css/图片,最长的一个文件时间须要3.6秒左右,如今最长的图片只须要170ms左右。在七牛对象存储bucket中能够设置文件的浏览器缓存Cache-Control的max-age的秒数,这样可让静态文件在客户端浏览器中缓存,好比static/js/index.js,第一次请求资源时会请求服务器,若是没有超出缓存时间,下载请求时直接加载本地资源。不过这里可能会产生一个问题。若是你的静态文件缓存在本地浏览器或者七牛的CDN中,你在更新服务器代码的时候,就会产生脏数据。用户请求的数据依旧是以前的缓存在本地或者CDN中的数据。解决的方法有几种,第一种是在你的静态文件后面加参数,好比原来请求static/js/index.js如今改为static/js/index.js?v=20170809,这两个是不一样的URI,会促使服务器从新加载新的静态文件,可是这样作有个问题,只能全量更新,没法增量更新。第二种方式是在你的静态文件前面加前缀,好比/v1/static/js/index.js,这个缺点也是同样,没法增量更新。第三种方式是在文件名后加md5值,好比static/js/index.c6d9c9fc12c1dbaee77703a4dd731a8b.js。若是没有改过的文件,仍是会加载到缓存中,该过的文件,因为md5值变了,会请求新的文件,因此推荐使用第三种方式。因为咱们项目的历史缘由,没办法改为第三种,暂时只能经过缓存的设置,我把客户端缓存设置为8小时,七牛的静态文件缓存为1个月,而后经过七牛的refresh的API,批量刷新一下网站中本身写的js/css的文件夹目录,让七牛的缓存从源中从新拉取文件。这样在半夜更新服务器时,让用户在次日使用时不会加载脏数据。redis

关于Media

  1. 视频
    视频通常就直接上传七牛,CDN加速。数据库

  2. 图片
    图片最先咱们是直接用python的wand库切图后,保存到线上服务器中。后来发现切图的时间慢,并且很消耗CPU跟内存的资源,因此如今都是原图直接上传到七牛中,七牛针对图片有图片样式的处理,好比头像,咱们有三种标准4040,5050,8080,原来只切成8080的图片,无论哪一种样式,经过css的width跟height属性控制其余样式。如今直接定义三个样式,在图片请求加上相关参数,直接就获取了这三个样式的图片,最小化的减小图片的加载。gulp

关于Cache

1.把常访问的页面用cache静态化。
2.把经常使用的数据所有丢到在redis中,减小从数据库中请求。后端

数据库

  1. 数据库读写分离。提升数据库性能。浏览器

  2. 代码中减小对数据库查询的请求,一次查完的不要查二次,对常常查询的字段建索引。七牛云存储

下一阶段要作的优化

  1. 负载均衡。缓存

  2. 分库分表。服务器

相关文章
相关标签/搜索