仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1739|回复: 20
打印 上一主题 下一主题

[学习教程] PHP编程:PHP教程:发掘细节提拔网站功能

[复制链接]
谁可相欹 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:44:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
说说这一个月左右的学习情况和心得吧!我个人认为,既然决定了去做一件事,那就要以认真的态度去对待!既然决定来学习了,那不管当初是抱着怎样的心态来到这个培训班的,都要让自己认真的投入到学习中。   </p> 信任互联网已愈来愈成为人们生涯中不成或缺的一局部。ajax,flex等等富客户真个使用使得人们越加“幸福”地体验着很多本来只能在C/S实 现的功效。好比Google时机已把最根基的office使用都搬到了互联网上。固然便当的同时毫无疑问的也使页面的速度愈来愈慢。本人是做前端开辟的,在功能方面,依据yahoo的查询拜访,后台只占5%,而前端高达95%之多,个中有88%的器材是可以优化的。


以上是一张web2.0页面的性命周期图。工程师很抽象地讲它分红了“怀孕,出身,卒业,娶亲”四个阶段。假如在咱们点击网页链接的时分可以意想到 这个进程而不是复杂的恳求-呼应的话,咱们即可以发掘出良多细节上可以提拔功能的器材。明天听了淘宝小马哥的一个对yahoo开辟团队对web功能研讨的 一个讲座,感到播种很大,想在blog上做个分享。
信任良多人都听过优化网站功能的14条划定规矩。更多的信息可见developer.yahoo.com
1. 尽量的削减 HTTP 的恳求数 [content] 2. 利用 CDN(Content Delivery Network) [server] 3. 添加 Expires 头(或 Cache-control ) [server] 4. Gzip 组件 [server] 5. 将 CSS 款式放在页面的上方 [css] 6. 将剧本挪动究竟部(包含内联的) [javascript] 7. 防止利用 CSS 中的 Expressions [css] 8. 将 JavaScript 和 CSS 自力成内部文件 [javascript] [css] 9. 削减 DNS 查询 [content] 10. 紧缩 JavaScript 和 CSS (包含内联的) [javascript] [css] 11. 防止重定向 [server] 12. 移除反复的剧本 [javascript] 13. 设置装备摆设实体标签(ETags) [css] 14. 使 AJAX 缓存   在firefox下有一个插件yslow,集成在firebug中,你可以用它很便利地来看看本人的网站在这几个方面的体现。


这是对用yslow对我的网站西风坊测评的了局,很遗憾,只要51分。呵呵。中国各大网站的分值都不高,刚测了一下,新浪和网易都是31分。然后yahoo(美国)的分值的确97分!可见yahoo在这方面作出的勉力。从他们总结的这14条划定规矩,已如今又新增添的20个点来看,有良多细节咱们真得是怎样都不会去想,有些做法乃至是有些“反常”了。
第一条、尽量的削减 HTTP 的恳求数Make Fewer HTTP Requests
http恳求是要开支的,想举措削减恳求数天然可以进步网页速度。经常使用的办法,兼并css,js(将一个页面中的css和js文件分离兼并)和 Image maps和css sprites等。固然也许将css,js文件拆分多个是由于css布局,共用等方面的思索。阿里巴巴中文站事先的做法是开辟时仍然分隔开辟,然后在后台 对js,css停止兼并,如许关于阅读器来讲仍然是一个恳求,然而开辟时依然能复原成多个,便利办理和反复援用。yahoo乃至建议将首页的css和js 直接写在页面文件外面,而不是内部援用。由于首页的会见量太大了,这么做也能够削减两个恳求数。而现实上国际的良多门户都是这么做的。
而css sprites是指只用将页面上的后台图兼并成一张,然后经由过程css的background-position属性界说不外的值来取他的后台。淘宝和阿里巴巴中文站今朝都是如许做的。有乐趣的可以看下淘宝和阿里巴巴的后台图
http://www.csssprites.com/ 这是个东西网站,它可以主动将你上传的图片兼并并给出对应的background-position坐标。并将了局以png和gif的格局输入。
第二条、利用CDN(内容分发收集): Use a Content Delivery Network
说假话,关于CDN这一块本人并非很懂得,复杂地讲,经由过程在现有的Internet中增添一层新的收集架构,将网站的内容宣布到最接近用户的 cache办事器内,经由过程DNS负载平衡的手艺,判别用户来历就近会见cache办事器获得所需的内容,杭州的用户会见近杭州办事器上的内容,北京的会见 近北京办事器上的内容。如许可以无效削减数据在收集上传输的工夫,进步速度。更具体地内容人人可以参考百度百科上关于CDN的注释。Yahoo!把静态内容散布到CDN削减了用户影响工夫20%或更多。
CDN手艺表示图:



CDN组网表示图:


第三条、 添加Expire/Cache-Control 头:Add an Expires Header
如今愈来愈多的图片,剧本,css,Flash被嵌入到页面中,当咱们会见他们的时分必将会做很多次的http恳求。其实咱们可以经由过程设置Expires header 来缓存这些文件。Expire其实就是经由过程header报文来指定特定类型的文件在览器中的缓存工夫。大多半的图片,flash在宣布后都是不需求常常修 改的,做了缓存今后如许阅读器今后就不需求再从办事器下载这些文件而是而直接从缓存中读取,如许再次会见页面的速度会大大加速。一个典范的HTTP 1.1协定前往的头信息:
HTTP/1.1 200 OK
Date: Fri, 30 Oct 1998 13:19:41 GMT
Server: Apache/1.3.3 (Unix)
Cache-Control: max-age=3600, must-revalidate
Expires: Fri, 30 Oct 1998 14:19:41 GMT
Last-Modified: Mon, 29 Jun 1998 02:28:12 GMT
ETag: “3e86-410-3596fbbc”
Content-Length: 1040
Content-Type: text/html
个中经由过程办事器端剧本设置Cache-Control和Expires可以完成。
如,在php中设置30天后过时:
  1. <!--pHeader("Cache-Control: must-revalidate"); $offset = 60 * 60 * 24 * 30; $ExpStr = "Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT"; Header($ExpStr);-->
复制代码
也能够经由过程设置装备摆设办事器自己完成,这些偶就不是很清晰了,呵呵。想懂得跟多的伴侣可以参考http://www.web-caching.com/
据我懂得,今朝阿里巴巴中文站的Expires过时工夫是30天。不外时代也有干预干与题,出格是关于剧本过时工夫的设置仍是应当细心思索下,否则响应的剧本功效更新后客户端能够要过很长一段工夫才干“感知”到如许的变更。之前做[suggest项目] 的时分就碰到过这个成绩。所以,哪些应当缓存,哪些不应缓存仍是应当细心推敲一番。
第四条、启用Gzip紧缩:Gzip Components
Gzip的思惟就是把文件先在办事器端停止紧缩,然后再传输。如许可以明显削减文件传输的巨细。传输终了后阅读器会 从头对紧缩过的内容停止解紧缩,并履行。今朝的阅读器都能“优秀”地撑持 gzip。不但阅读器可以辨认,并且各大“爬虫”也一样可以辨认,列位搜索引擎优化er可以放下心了。并且gzip的紧缩比例十分大,普通紧缩率为85%,就是 压服务器端100K的页面可以紧缩到25K摆布再发送到客户端。详细的Gzip紧缩道理人人可以参考csdn上的《gzip紧缩算法》 这篇文章。雅虎出格强调, 一切的文本内容都应当被gzip紧缩: html (php), js, css, xml, txt… 这一点咱们网站做得不错,是一个A。之前咱们的首页也并非A,由于首页上还有良多告白代码投放的js,这些告白代码具有者的网站的js没有经由gzip紧缩,也会拖累咱们网站。
以上三点大多属于办事器真个内容,自己也是深刻地懂得罢了。说得不合错误的中央有待列位斧正。
第五条、将css放在页面最下面 ( Put Stylesheets at the Top)
将css放在页面最下面,这是为何?由于 ie,firefox等阅读器在css全体传输完整之前不会去衬着任何的器材。来由诚如小马哥说得那样很复杂。css,全称Cascading Style Sheets (层叠款式表单)。层叠即意味这前面的css可以掩盖后面的css,级别高的css可以掩盖级别低的css。在[css之!important] 这篇文章的最上面曾复杂地提到过这层级关系,这里咱们只需求晓得css可以被掩盖的。既然后面的可以被掩盖,阅读器在他完整加载终了以后再去衬着无疑也是通情达理的良多阅读器下,如IE,把款式表放在页面的底部的成绩在于它制止了网页内容的按次显示。阅读器禁止显示以避免重画页面元素,那用户只能看到空白页了。Firefox不会禁止显示,但这意味着当款式表下载后,有些页面元素能够需求重画,这招致闪灼成绩。所以咱们应当尽快让css加载终了
顺着这层意思,假如咱们再细究的话,其实还有可以优化的中央。好比本站下面包括的两个css文件,<link rel=“stylesheet” rev=“stylesheet” href=“http://www.space007.com/themes/谷歌/style/谷歌.css” type=“text/css” media=“screen” /> 和<link rel=“stylesheet” rev=“stylesheet” href=“http://www.space007.com/css/print.css” type=“text/css” media=“print” />。 从media就能够看出第一个css是针对阅读器的,第二个css文件是针对打印款式的。从用户的行动习气下去将,要打印页面的举措必定是产生在页面页面 显示出来以后的。所以对照好的办法应当是在页面加载终了以后再静态地为这张页面加上针对打印装备的css,如许又可以进步一点速度。(哈哈)
第六条、将script放在页面最上面 (Put Scripts at the Bottom )
将剧本放在页面最上面的目标有那末两点: 1、 由于避免script剧本的履行壅塞页面的下载。在页面loading的过程当中,当阅读器读到js履行语句的时分必定会把它全体注释终了后在会接上去读下 面的内容。不信你可以写一个js逝世轮回看看页面上面的器材还会不会出来。(setTimeout 和 setInterval的履行有点相似于多线程,在响应的呼应工夫之前也会持续上面的内容衬着。)阅读器这么做的逻辑是由于js随时能够执 行 location.href或是其他能够完整中止此页面进程的函数,即如斯,固然得等他履行终了以后再加载咯。所以放在页面最初,可以无效削减页面可 视元素的加载工夫。        2、剧本引发的第二个成绩是它壅塞并行下载数目。HTTP/1.1标准建议阅读器每一个主机的并行下载数不超越2个(IE只能为2个,其他阅读器如ff等都是默许设置为2个,不外新出的ie8可以达6个)。因而假如您把图象文件散布到多台机械的话,您可以到达超越2个的并行下载。然而当剧本文件下载时,阅读器不会启动其他的并行下载。
固然对各个网站来讲,把剧本都放到页面底部加载的可行性仍是值得商议的。就好比阿里巴巴中文站的页面。良多中央有内联的js,页面的显示严重依附于此,我供认这和无侵入剧本的理念相差甚远,然而良多“汗青遗留成绩”却不是那末轻易处理的。
第七条、防止在CSS中利用Expressions (Avoid CSS Expressions )
不外如许就多了两层有意义的嵌套,一定欠好。还需求一个更好的举措。
第八条、把javascript和css都放到内部文件中(Make JavaScript and CSS External )
这点我想仍是很轻易了解的。不但从功能优化上会这么做,用代码易于保护的角度看也应当这么做。把css和js写在页面内容可以削减2次恳求,但也增 大了页面的巨细。假如已对css和js做了缓存,那也就没有2次过剩的http恳求了。固然,我在后面中也说过,有些特别的页面开辟人员仍是会选择内联 的css和js文件。
第九条、削减DNS查询 (Reduce DNS Lookups)
在 Internet上域名与IP地址之间是逐一对应的,域名(kuqin.com)很好记,但盘算机不熟悉,盘算机之间的“相认”还要转成ip地址。在收集 上每台盘算机都对应有一个自力的ip地址。在域名和ip地址之间的转换任务称为域名解析,也称DNS查询。一次DNS的解析进程会损耗20-120毫秒的 工夫,在dns查询停止之前,阅读器不会下载该域名下的任何器材。所以削减dns查询的工夫可以加速页面的加载速度。yahoo的建议一个页面所包括的域 名数尽可能掌握在2-4个。这就需求对页面全体有一个很好的计划。今朝咱们这点做的欠好,良多打点的告白投放体系拖累了咱们。
第十条、紧缩 JavaScript 和 CSS (Minify JavaScript )
紧缩js和css的摆布很明显,削减页面字节数。容量小页面加载速度天然也就快。并且紧缩除削减体积之外还可以起到必定的回护摆布。这点咱们做得不错。经常使用的紧缩东西有JsMin、YUI compressor等。别的像http://dean.edwards.name/packer/还给咱们供应了一个十分便利的在线紧缩东西。你可以在jQuery的网页看到紧缩过的js文件和没有紧缩过的js文件的容量不同:


固然,紧缩带来的一个坏处就是代码的可读性没了。信任良多做前真个伴侣都碰到过这个成绩:看Google的后果很酷,可是去看他的源代码倒是一大堆 挤在一同的字符,连函数名都是交换过的,汗逝世!本人的代码也如许岂不是对保护十分不便利。一切阿里巴巴中文站今朝采取的做法是在js和css宣布的时分在 办事器端停止紧缩。如许在咱们很便利地保护本人的代码。
第十一条、防止重定向(Avoid Redirects )
不久前在ieblog上看到过《Internet Explorer and Connection Limits》这篇文章,好比 当你输出http://www.webjx.com/ 的时分办事器会主动发生一个301办事器转向 http://www.webjx.com/ ,你看阅读器的地址栏就可以看出来。这类重定向天然也是需求损耗工夫的。固然这只是一个例子,产生重定向的缘由还有良多,然而不变的是每增添一次重定向就会增添一次web恳求,所以因该尽可能削减。
第十二条、移除反复的剧本(Remove Duplicate Scripts )
这点我想不说也晓得,不但是从功能上思索,代码标准上看也是如许。然而不能不供认,良多时分咱们会由于图一时之快而加上一些也许是反复的代码。也许一个一致的css框架和js框架可以对照好的处理咱们的成绩。小猪的概念很对,不但是要做到不反复,更是要做到可重用。
第十三条、设置装备摆设实体标签(ETags)(Configure ETags )
这点我也不懂,呵呵。在inforQ上找到一篇注释得对照具体的申明《利用ETags削减Web使用带宽和负载》,有乐趣的同窗可以去看看。
第十四条、使 AJAX 缓存 (Make Ajax Cacheable )
ajax还要去缓存?做ajax恳求的时分常常还要增添一个工夫戳去防止他缓存。It’s important to remember that “asynchronous” does not imply “instantaneous”.(记住“异步”不是“刹时”这一点很主要)。记住,即便AJAX是静态发生的并且只对一个用户起感化,他们仍然可以被缓 存。
也或许是因为我还没有真正的学到深处吧,说实在的,PHP中的很多高级点的应用,如PHP类、PHP函数基本还是不懂吧!
飘灵儿 该用户已被删除
沙发
发表于 2015-2-4 06:25:19 | 只看该作者
当然这种网站的会员费就几十块钱。
小女巫 该用户已被删除
板凳
发表于 2015-2-8 22:12:39 | 只看该作者
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
第二个灵魂 该用户已被删除
地板
发表于 2015-2-19 09:32:06 | 只看该作者
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
蒙在股里 该用户已被删除
5#
发表于 2015-2-21 18:25:44 | 只看该作者
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
飘飘悠悠 该用户已被删除
6#
发表于 2015-3-6 20:49:03 | 只看该作者
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
爱飞 该用户已被删除
7#
发表于 2015-3-13 08:10:32 | 只看该作者
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
只想知道 该用户已被删除
8#
发表于 2015-3-13 22:20:00 | 只看该作者
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
若相依 该用户已被删除
9#
发表于 2015-3-20 20:47:44 | 只看该作者
作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。
简单生活 该用户已被删除
10#
发表于 2015-3-27 19:11:04 | 只看该作者
其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。
灵魂腐蚀 该用户已被删除
11#
发表于 2015-4-1 18:10:12 | 只看该作者
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
分手快乐 该用户已被删除
12#
发表于 2015-4-9 19:51:29 | 只看该作者
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
柔情似水 该用户已被删除
13#
发表于 2015-4-11 04:08:48 | 只看该作者
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
透明 该用户已被删除
14#
发表于 2015-4-12 23:16:33 | 只看该作者
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
老尸 该用户已被删除
15#
发表于 2015-4-14 13:05:31 | 只看该作者
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
冷月葬花魂 该用户已被删除
16#
发表于 2015-5-1 16:11:58 | 只看该作者
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
海妖 该用户已被删除
17#
发表于 2015-5-6 00:12:41 | 只看该作者
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
兰色精灵 该用户已被删除
18#
发表于 2015-6-14 11:00:54 | 只看该作者
真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,
不帅 该用户已被删除
19#
发表于 2015-6-27 22:18:22 | 只看该作者
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
精灵巫婆 该用户已被删除
20#
发表于 2015-6-29 22:43:56 | 只看该作者
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-4 20:54

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表