码迷,mamicode.com
首页 > Web开发 > 详细

2016-02-12 网站开发知识梳理--v1.0

时间:2016-04-29 18:42:01      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:

1. 梳理的体系结构如下:

       技术分享 技术分享

2.下面具体讲讲我目前的认知状况:

<1> 浏览器端优化:

目的 —— 降低页面加载时间

#影响加载时间的因素:

页面上的资源(图片、js、css等)资源链接数

静态文件是否设置了缓存(依据expires/ETAG)

页面上链接是否来自多个域名(浏览器同时向同一个域名发起的链接数是固定的,所以将不同的文件放到不同的二级域名下可以提高资源链接的并发数)

cookie的使用(非通用的cookie不要设置成根域名,否则所有页面、js、图片在访问时都会带上cookie,增加了传输的数据的大小)

css、js放置的位置

#针对以上因素的优化方案:

页面上的资源(图片、js、css等)资源链接数:  每个请求需要和服务器通过三次握手建立一个tcp链接,为了减少链接数据降低花费在建立链接上的时间,可在服务器

端使用minify等js/css压缩合并工具将 js、css等文件合并成一个js文件,一个css文件。

静态文件是否设置了缓存(依据expires/ETAG/Cache-Control:max-age):在服务器端(例如apache)对要缓存的文件进行expires/etag的缓存配置,使得访问网站时静态文件js/css/图片

等先从服务器进行验证,验证通过则使用浏览器本地的文件。如果设置了Cache-Control:max-age =5, 且Expires为一个大于当前时间的值时,则接下来的5秒之内访问该资源都不用到服务器进行验证,直接取浏览器本地的文件.

页面上链接是否来自多个域名:给js/css和图片等静态文件配置单独的二级域名,增加浏览器同一时间向服务器发起的链接数,并发的下载多个文件

cookie的使用:对于非全站性的cookie,设置cookie的作用域为使用该cookie的域名,和静态文件的二级域名区分开来。这里访问静态文件时,就不会有cookie信息

被传递过去了

css、js放置的位置:js应放置到底部,因为js是边加载边解析,放在头部影响整个页面的加载速度。css放在头部可以保证样式被直接应用在文档上,放到底部在加载

页面后需要再依据样式文件对页面进行样式渲染

# 需要拓展的内容:

apache 缓存控制模块:mod_cache

#需要掌握的开发技术知识:

百度前端工程构建工具fix3: 解决css/js和html同步修改因发布有前后时间差导致用户看到的页面加载了错误的js/css的问题,对静态资源的资源名称加入文件指纹(hash值)等来避免用户访问到过期的js/css

javascript 开发框架 : jquery   jquey-ui    AngularJS(javascript mvc框架) hammer.js(移动开发框架)

css开发框架:bootstrap

html5基本元素的使用

<2> 缓存服务器优化:

目的 —— 降低在网络传输上的耗时

#影响网络传输速度的因素:

 网络延时,服务器和客户端的物理距离: 对于静态资源使用cdn内容分发网络来实现访问加速

 目的 —— 在保证业务的正确性的前提下,缓存页面或数据,减少前台应用服务器向后台应用接口服务器发起请求的次数

#缓存数据要注意的地方:

缓存时间:依据业务需求,确定每个缓存的生存期,保证站内数据的一致性。

单个缓存数据的大小:memcache 默认单个元素的大小不能超过1M,否则对应的缓存会失效。

缓存系统的选取: 

xcache: 缓存访问量比重很大的页面或数据,好处是数据缓存在前端应用服务器本地,获取的时候无网络传输消耗。

memache: 以key/value格式存储数据,适合缓存简单结构的数据和单个元素比较大的数据,获取数据需要连接memache服务器,获取数据时增加了网络上传输数据的时间。

redis:支持丰富的数据存储结构,适合应用在存储的数据结构复杂的场景里,比memache好的一点是断电宕机等情况下数据可恢复。

缓存命中率:即多次访问中,有多少比率访问的是缓存服务器缓存的数据。这个需要依据业务需求来进行考虑,哪些页面的哪些数据是访问热点,在缓存容量有限的情

况下 优先缓存这部分热点数据。

#需要掌握的开发技术知识:

memcache:基础使用方法、分布式部署方案、命中率等常用数据查询管理台、memcache基础知识与原理
redis: 基础使用方法、集群部署方案、命中率等常用数据查询管理台、redis基础知识与原理
xcache: 常用配置项的作用、管理后台、xcache基础知识与原理

<3> 前台应用服务器优化:

目的 —— 提升响应速度

#影响响应速度的因素:

响应页面的大小

页面上的资源(图片、js、css等)的文件大小

php代码编译后生成的opcode代码是否进行了缓存

非实时性数据是否做了缓存

#针对以上因素的优化方案:

响应页面的大小:web服务器端开启http压缩,使用gzip/ompress等编码方式对响应数据进行压缩,减小响页面的字节数量

页面上的资源(图片、js、css等)的文件大小:使用minify等js、css合并压缩工具,将js或css进行压缩处理。

php代码编译后生成的opcode代码是否进行了缓存:php代码在执行前会被转换成可以执行的机器语言代码,然后在虚拟机上进行执行。将php代码转换后的机器语言代码缓存起来,可以省掉每次

问php脚本程序时php脚本程序被编译成机器码的这个过程耗费的时间。

非实时性数据是否做了缓存:对于一些实时性要求不高的数据,可以在控制器层或模型层对数据进行缓存,客户端访问前端应用服务器时数据直接从缓存服务器获取,免去访问后端接口服务器,这样

不但加快了用户访问网站的速度,同时也降低了后端服务器及数据库的压力。


目的 ——  过滤非法输入,防止网站被恶意攻击 

#常见攻击与防御:

xss/sql注入攻击: 对于用户所有用户的输入,都进行xss/sql关键词过滤,过滤掉攻击的代码,可参考thinkphp的remove_xss函数

CSRF(跨镇请求伪造):针对这种从第三方网站发起提交的攻击,可以在要提交的表单上添加验证标签(sign),每次访问会产生唯一的不同的sign,用过即失效。这样即使用户访问了第三方网站,被伪

造了表单提交等请求时,服务器可以有效的进行判别本次提交的访问是否合法。


#需要掌握的开发技术知识:

使用过的php框架: yii   thinkphp  ci  phalcon   

对于框架要知道: 

如何安装?环境要求是什么?

配置文件在哪?数据库/路由等配置在哪里配置?

从入口开始到控制器到模型到视图整个流程是怎样的

如果要加入扩展比如minify都要做哪些工作和修改.

框架的一些常用工具的配置和使用,比如yii的gii工具


进行过二次开发的php软件: 悟空crm  phpcms  tipask 

使用过的apache模块: 

mpm-itk:为每个虚拟主机配置单独的运行时用户, 同一台服务器上有多个站点时一个站点获取权限不会影响到另一个站点

mod_rewrite: 用于url重写,实现伪静态,比如seo让你把www.yourwebsite.com/index.php 重定向到 www.yourwebsite.com/

mod_headers: 用于提供一些指令设置http请求头

mod_expires:  和mod_headers搭配使用,用于配置文件的有效期,控制Expires头内容和Cache-Control头的max-age指令

apache进行的常用配置:

配置虚拟主机

配置https服务: 生成认证证书, 并配置http-ssl.conf


需要熟悉apache/nginx服务器的搭建与配置,可以以写成配置和搭建的脚本来衡定

需要熟悉使用phpize来安装php扩展模块

需要熟悉用composer来进行php依赖管理


<4> 中间件:

目的 —— 完成不同技术之间的资源共享,如php和java接口之间信息的交换;控制应用服务器到后端基础服务服务器的并发访问量, 防止因一个应用服务器向后端基础服务服务器发起并发请求过多

导致基础服务器宕机,从而导致其他使用基础服务器数据的应用服务器都无法进行正常服务。

#可用的软件: 

zeroC ice: 中间件, 完成跨平台跨编程语言间的数据交互.

rabbitMq: 消息队列, 异步处理非实时响应的请求,提供有保障的消息传递, 降低高并发请求对服务器的产生的压力.


#需要掌握的开发技术知识:

zeroC ice 的配置与使用、zeroC的基础知识与技术原理

rabbitMq 的配置与使用、rabbitMq的基础知识与技术原理


<5> 基础服务服务器

目的 —— 提升服务器稳定性,降低服务器压力

#可采取的措施: 

负载均衡: 配置基础服务服务器集群, 使用反向代理将访问访问均衡的分配到集群中合适单个服务器上.

#需要掌握的开发技术知识:

服务器端负载均衡的部署与配置调试优化

<6>数据库

目的 —— 提升数据库可用性, 提升访问速度

#可采取的措施:

   使用数据库连接池: 使用连接池来管理数据库的连接,用以复用现有的数据库连接、关闭超过最大空闲时间的数据库连接。  

读写分离: 配置mysql主从,将查询的压力移到从库上,写操作只在主库上进行. 缺点是对于数据库访问的

负载均衡需要在web应用程序里进行实现.

使用mysql集群: 好处是数据库访问的负载均衡功能在集群中实现, web应用端不需要考虑访问哪台数据库问题.

查询/建表优化: 建表优化(哪些字段添加索引,如何建立分区,存储引擎的选取, 字段类型的选取),  查询优化(索引的使用, 

查询计划的分析与sql的调优), 数据量很大时的分库分表策略.

#需要掌握的开发技术知识:

mysql主从数据库的搭建与调试、mysql主从同步延迟的解决方案

mysql集群的部署与调试

依据对mysql执行计划的分析来对sql进行优化,mysql各个引擎的特点与选择,mysql索引的使用与优化,mysql常用的配置的调优

3.网站常用模块:

搜索服务器:如solr、Risearch php等, 提供分词、全文搜索等功能。

单点登录:  phpCas、ucenter等,提供单点登录、统一的用户信息管理

数据加密:js加密-php解密(encrypt-js 加密--PHP解密(RSA, AES)),

网络爬虫: scrapy(python)

4.拓展知识:


2016-02-12 网站开发知识梳理--v1.0

标签:

原文地址:http://blog.csdn.net/m1101322632/article/details/50718916

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!