2016-02-12 网站开发知识梳理--v1.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.拓展知识:

PHP的执行原理/执行流程    

时间: 2024-08-10 23:17:35

2016-02-12 网站开发知识梳理--v1.0的相关文章

安卓开发开发规范手册V1.0

安卓开发开发规范手册V1.0 之前发布过一份Web安全开发规范手册V1.0,看到收藏文章的读者挺多,发现整理这些文档还挺有意义. 最近周末抽了些时间把之前收集关于安卓安全开发的资料也整理了一下,整理出一份安卓安全开发手册,大部分内容都是在一些博客看到各位师傅的分享. 一.manifest文件安全 1.1 禁止PermissionGroup的属性为空 PermissionGroup可以对permission进行一个逻辑上的分组.如果PermissionGroup的属性为空,会导致权限定义无效,且其

业务数据库开发上线流程v1.0

XX业务数据库开发上线流程v1.0 草拟时间:2015.11.23制订时间:修订时间: 0x00 目的 本文定义了业务在开发上线发布过程中涉及的数据库相关流程,指引业务人员高效完成数据库上线工作,最终确保上线质量可控. 0x01 适用范围 人员:所有研发人员,运维人员数据库:业务所有MySQL 数据库 0x02 流程说明 流程内容包含:数据库申请-->功能开发---功能与性能测试-->提交审核-->运维审核--->上线变更---验证---上线结束 1. 数据库服务申请 流程负责人员

在 VS2013的ASPNET网站开发中用 xheditor v1.1.13 作为HTML编辑器

要用vs2013开发一个博客网站,.net   framework  4,需要一个HTML编辑器作为写文章的工具.经多方试用,排除了dotnettextbox.kceditor.觉得xheditor 不错,现将使用方法记录如下: 1.到http://download.csdn.net/download/chenhaoying/4274663下载,会得到一个名为:"xheditor-1.1.13在asp.net中使用.rar"的文件. 2.用vs2013新建一个网站,网站名任何,此例为T

Web安全开发规范手册V1.0

一.背景 团队最近频繁遭受网络攻击,引起了部门技术负责人的重视,笔者在团队中相对来说更懂安全,因此花了点时间编辑了一份安全开发自检清单,觉得应该也有不少读者有需要,所以将其分享出来. 二.自检清单 检查类型 说明 检查项 输入验证 概述 任何来自客户端的数据,如URL和参数.HTTP头部. Javascript戓其他嵌入代码提交的信息,都属于不可信数据.在应用外部边界或内部每个组件或功能边界,都将其当做潜在的恶意输入来校验 白名单 不可信数据可以设定白名单校验的,应接受所有和白名单匹配的数据,并

2016年旅游网站源码排行榜(最新)

在为大家做旅游网站源码排行之前,先给大家介绍一下什么是旅游网站源码,旅游网站源码,也称为旅游源代码.是指为编译的文本代码或一个网站的全部源代码文件,是一系列人类可读指令.大家都把它理解为源文代码,当前看到的这个网页来说,其实它就是由一大堆的源码组成,通过浏览器如Google.百度等浏览器或服务器翻译成我们现在所看见的样子!这样相对通俗的解释大家应该都懂吧!下面由是由笔者精心研究.收集.归纳的旅游网站源码,为大家做一个优先级排序,希望对大家在选择旅游网站源码的时候有所帮助. Top1 思途旅游网站

webApp手机网站开发、最新H5+CSS3开发微信端网站

手机网站移动端webApp开发实践来啦,助您更快.更好的学习HTML5+css3手机网站开发知识!!! 移动端web网站(移动端web开发/APP开发).移动端App模版.手机网站模版.HTML5+CSS3网站模版,手机端网站开发模板.手机网站.移动webApp开发.移动端网站.HTML5+CSS3.手机web开发...... WebApp与Native App有何区别呢? Native App:1.开发成本非常大.一般使用的开发语言为JAVA.C++.Objective-C.2.更新体验较差.

翻译:Gregory Larsen,2016/02/19(第一版:2014年12月17日)高级T-SQL阶梯1级:使用CROSS JOIN介绍高级T-SQL

原文链接:http://www.sqlservercentral.com/articles/Stairway+Series/119933/ 原文作者:Gregory Larsen,2016/02/19(第一版:2014年12月17日) 系列 本文是"Stairway Series:Stairway to Advanced T-SQL"的一部分 这个阶梯将包含一系列文章,这些文章将在前面两个T-SQL阶梯,T-SQL DML和T-SQL超越基础知识的T-SQL基础上进行扩展. 这个楼梯应

JSP+Ajax网站开发小知识

一.JSP基础 1.<select  name="love"  size="3">其中的size属性指定了列表框显示选项的条数,如果所有选项多于这个数,将会出现滚动条. 2.addCookie(Cookie  cookie)方法将其放入客户端,获取Cookie对象可调用request对象的Cookie[]  getcookies()方法. Cookie   myCookie  =  new  Cookie("name",  "

jplogic v1.0案例开发之知识库管理(文档管理等)(二)

jplogic v1.0开发陆续更新,意在和广大网友分享交流.通过寻求合作伙伴,交流群376447127.以下是jplogic的关于知识库模块的部分功能,例如以下进行功能展示: 知识库主界面: 新增知识类别: 新增文档: 调整类别结构: 附件明细操作: 文档信息查看:(将上传的各种文本文件转化成swf格式,便能够实现仿百度文库在线阅读功能) 海量知识库文档高级检索(数据库检索.索引检索(全文检索))等功能.