0%

图片处理

压缩

  • tinypng,质量很高的在线图片压缩网站,推荐
  • 智图,本地图片压缩软件
  • image-webpack-loader,webpack打包loader,不太推荐打包的时候再处理图片,很影响打包速度。

合并(css雪碧图)

将网站上用到的图片合并到一个图片里

base64

将一些小图片做出小图片,直接嵌再html中,减少请求,但图片转成base64以后会增大体积,大概1/3的样子,酌情使用。

懒加载

图片进入可视区域之后再请求资源

css

一般来说css也就是合并多个文件,然后压缩,还有就是可以将css做出放在head标签里(一般通过打包工具处理)

js

基本也是压缩合并的处理

defer 和 async

有些特殊的脚本可以使用延迟加载或者异步加载,如埋点,统计脚本等

预加载 preload 和 prefetch

可以将之后页面可能会用到的资源再浏览器空闲时间预加载回来,并缓存到本地,不仅仅是可以处理js,其他的资源也可以在合适的尝试使用这个特性

缓存

由于web的机制,资源基本都是靠网络加载回来,上面的那些优化手段都是通过减少http请求,或者合适的时机再做请求,从这个方面考虑,如果把请求的省了,岂不是更快。当然还得考虑资源的更新问题,所以合适的缓存策略很重要。
一般来说静态资源最好做强缓存,用不更新,更新的时候给资源起不同名字,一般的打包工具webpack/grunt/gulp都有类似hash的命名,文件名用hash值做标记
html文件最好不做缓存,这样就不会影响网站内容的更新。
关于如何做缓存,参考缓存详解
当然还可以使用Service Worker,html的storage api做缓存。

现代化的web应用中多数采用 SPA(Single Page Application)的方式来编写网站或者应用,当你的 SPA 的路由方式使用的是html5的history模式的时候,需要服务器端做相应的配置,nginx 配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
server {
location /erp-farm-admin {
alias /home/erp-farm-admin;
index index.html index.htm;

if ($request_filename ~ .*.(html|htm)$) {
add_header Cache-Control no-cache,no-store,must-revalidate;
}

if ($request_filename ~ .*.(js|css|jpe?g|png|gif)$) {
add_header Cache-Control public,max-age=31536000;
add_header expires 30d;
}

try_files $uri $uri/ /erp-farm-admin/index.html;
}

}

假设我们有一个叫blog的项目,访问路径大概是http://domain.com/erp-farm-admin/,而我们的blog项目的部署路径在/home/erp-farm-admin下。加上这段配置,项目的路由就与普通的页面访问一致了。

nodemon

nodejs正常开发的过程中,每次修改修改代码都必须手动重启服务器,这是很麻烦的操作,于是就出来了很多自动重启的工具,其中 nodemon 是我用过比较好用的,用法比较简单,首先安装nodemon

阅读全文 »