数据层次

  • sql的优化,多次查询的尽量用一句sql来执行
  • 索引优化。表过大,重要搜索字段一定要加上索引,多字段要遵循最左原则
  • 数据库引擎:对于非重要数据表可以使用myisam数据表,而非innerdb
  • 反三范式设计,减少数据表的查询
  • 如果数据量确实过大,需要根据适当的算法考虑分表
  • 配置数据库的主从复制,读写分离。

代码层次

  • include_once比include更加耗时
  • 变量拼接比直接使用双引号快
  • 公共变量的定义如果变量值不变化,不要写再循环内
  • 静态函数要比成员函数快(不用new了,直接使用)
  • 如果处理的文案过大,正则会很影响行性能;
  • 尽量不要使用相对路径来包含文件,因为会基于当前目录去查找;
  • ===要快于==
  • && 要比and快,并且更不容易出问题(&& 运算级别高于and),类推。
  • 后端缓存
  • 对于常用数据,要用缓存存储。可以使用redis等,但是也要考虑内存的大小。具体取舍看具体项目
  • 前端
  • 服务器缓存:pagecache,
  • 客户端:基本常用数据存储到cookie,localstorage等不需要不同页面都要获取接口数据,对接口造成压力
  • 服务器层次
  • 硬件配置
  • 服务器尽量购买使用地区最近的服务器
  • 负载均衡,让多个服务器来分解压力
  1. 接口ip请求频次限制
  2. 登录,注册再适当的时候提供注册验证码(比如请求高,或者被攻击,或者同一个客户端频繁请求)
  3. 前端的数据永远都认为是不靠谱的,加入数据库需要做转义处理,防止sql注入
  4. 非代码数据要做转义处理后方可展示。比如非法的一些script语句
  5. 代码逻辑要谨慎,自测避免出现过大漏洞
  6. 线上必须屏蔽具体错误,避免暴漏重要信息

框架:thinkphp(自创建模板引擎),yii,laravel

引擎:smarty,Blade,Twig等

系统:wordpress,drupal

常见:GET/POST, 其他:PUT,DELETE, 通常认为对应资源的:获取,增加,修改,删除

区别:

GET,DELETE,url传递参数

PUT,POST body传参,

数据大小,安全性,url可见性

搜索引擎:GET,url传参

学习简单,快速入门,快速开发; php开发的项目具有很好的移植性,可以再不同的操作系统下部署。