当前位置: 首页 > news >正文

网站开发需求分析的内容网站开发的背景是指什么

网站开发需求分析的内容,网站开发的背景是指什么,西安汇友网站建设,广告传媒公司是做什么的原文译自雅虎开发者社区#xff0c;转载译文请标明出处。关注我的sina微博#xff0c;共同进步#xff01;为了让网页响应速度更快Exceptional Performance团队列出了一系列的最佳实践#xff0c;包括35个最佳实践条目#xff0c;分成7种类型类。避免重定向标签#xff1… 原文译自雅虎开发者社区转载译文请标明出处。关注我的sina微博共同进步为了让网页响应速度更快Exceptional Performance团队列出了一系列的最佳实践包括35个最佳实践条目分成7种类型类。避免重定向标签内容使用301和302状态码可以完成重定向。这里有个301响应的HTTP报文头部实例HTTP/1.1 301 MovedPermanentlyLocation: http://example.com/newuriContent-Type: text/html浏览器自动的将用户引导到location字段所指定的URL地址。所有的重定向的必要信息都位于报文头部报文体通常为空。301和302响应并不被缓存除非添加像Expires或者Cache-Controll的报文头部以指定浏览器需要进行缓存。Meta刷新标签和JavaScript是其他的将用户引导到不同URL地址的方法但是如果你必须重定向更好的方式是使用3xx的HTTP状态码这样可以确保浏览器返回按钮工作正常。需要关注的是重定向减慢了用户的体验。将重定向插入到用户和HTML文件中会减慢页面中的一切这是由于直到HTML文档完成加载页面中没有可以被渲染的东西也没有组件开始被渲染。一个经常发生的耗费的重定向并且却通常会被开发者疏忽的问题如下。URL地址末尾本该有的斜线丢失时就会出现这种问题例如访问http://astology.yahoo.com/astrology 会导致301响应的发生将页面重定向到http://astology.yahoo.com/astrology/(注意添加了斜线)。在Apache中通过使用Alias或者mod_rewrite或者DirectorySlash来修正。连接遗留网站到一个新的网站是重定向的另一个应用。其他的情况包括连接网站中不同的部分和基于特定的条件浏览器类型用户账户将用户引导开。使用重定向来连接两个网站是件容易的事并且需要很少的额外编码。尽管在这些情况下使用重定向减少了开发者的工作量这也降低了用户的体验。可选的方式是当两套编码位于同一个服务器上时使用Alias和mod_rewrite来完成重定向。如果是因为域名更改而需要重定向一个可选的方法是创建CNAME记录创建别名从一个域名指向另一个域名的DNS记录结合Alias和mod_rewrite来实现。移除重复的脚本文件标签JavaScript在一个页面中包含同样的JavaScript代码两次会降低性能。你想这种事情可能并不常发生。在对美国前十的网站的一个检查是发现他们中的两个包含重复的脚本文件。两个主要的因素增加了单页面中脚本文件重复的偶然性团队规模和脚本文件的个数。当这样的是发生时重复的脚本元素通过创建不必要的HTTP请求以及浪费JavaScript的执行资源来降低性能。不必要的HTTP请求会在IE中发生然而在Firefox中却没有。在IE中如果外联的脚本文件被包含两次并且未被缓存IE就在页面渲染的过程中产生两个HTTP请求。即使脚本文件被缓存了额外的HTTP请求在页面重新加载的过程中也会发生。除了产生不必要的HTTP请求脚本的多次执行也浪费了时间。多余的JavaScript执行会在IE和Firefox中同时发生而不管是否缓存。一个避免意外的包含两次同样的脚本的方法是实现你的模板系统中的脚本管理模块。典型的方法是在HTML页面中使用Script标签。 script type”text/javascript”src”menu.js”/script在PHP中可以借助于调用insertScript函数来实现 ?php insertScript(“menu.js”)?除了防止同脚本文件被插入两次这个函数可以处理其他的脚本问题比如依赖检查以及为脚本的文件名中添加版本号以支持长时间过期的头部ExpiresHeader。配置ETags标签服务器端实体标签ETags是web服务器和浏览器用来判断缓存中的组件和源服务器中的组件是否匹配的机制。“entity”是“component”的另一种表述图像脚本样式等ETags通过提供比last-modified日期更富有弹性的机制来验证实体。一个Etag就是一个唯一标示一个组件版本的字符串。唯一的格式限制是这个字符串必须使用引号来标注。源服务器通过ETag响应报文头部来指定组件的ETag。 HTTP/1.1 200 Ok Last-Modified: Tue, 12 Dec 2006 03:03:59 GMT ETag: “10c24bc-4ab-457e1c1f” Content-Length: 12195稍后如果浏览器不得不验证组件将使用If-None-Match头部将ETag传回到源服务器。如ETag匹配304状态码将会被返回也就减少了响应报文12195字节。 GET /i/yahoo.git HTTP/1.1 Host: us.yimg.com If-Modified-Since: Tue, 12 Dec 2006 03:03:59 GMT If-None-match: “10c24bc-4ab-457e1c1f” HTTP/1.1 304 Not ModifiedETags的问题在于它们使用特殊属性来构建使得它们只对应于一个特定的服务器。当从一个服务器上得到一个源组件稍后又从另一个不同的服务器上去验证的情况下ETag是不会匹配的这种情况在使用服务器集群处理请求的Web站点中是很普遍的现象。默认情况下Apache和IIS都为ETag嵌入了数据奇迹般的较少了验证过程中的奇怪特性这在基于多个服务器上的web站点上测试可行。Apache1.3和2.x上ETag格式是inode-size-timestamp尽管在多个服务器上会处于同一个目录下、有着同样的尺寸、许可、时间戳等。inode却随着不同的服务器而不同。II5.0和6.0在ETags上有相似的问题。ETags在IIS上的格式是Filetimestamp:ChangeNumber。“ChangeNumber”是用于记录对IIS的配置改变。在一个Web站点的所有的IIS服务器上ChangeNumber一般是不同的。结果就是由Apache和IIS为一个相同的模块产生的ETags在不同的服务器上并不匹配。如果ETags不匹配用户也就不会获得简短快速的304响应而那恰恰是ETags被设计出目的取而代之的是他们将会获取一个正常的200响应这个响应携带了所有的组件数据。如果你仅仅在一个服务器上管理你的站点这不是问题。但是如果你有多个服务器来管理站点并且使用Apache和IIS的默认ETag配置你的用户就获得了更慢的页面加载你的服务器负荷也会加重你浪费了更多的带宽并且代理也不会很好的缓存你的内容。即使你的组件有长时间过期的头部一个有条件GET请求也会发出无论用户是点击了重新加载或者刷新按钮。如果你没有利用ETags所提供的所有的弹性验证模型最好直接移除ETag机制。Last-Modified头部依据组件的时间戳来验证。移除ETag会在相应报文和后续的请求中减少了HTTP头部的大小。这篇MicrosoftSupport文章介绍了如何移除ETags。在Apache中在配置文件中仅仅加入下面这句话就能移除ETags FileETag:none让Ajax请求可被缓存标签内容Ajax的一个广为人知的好处就是它为用户提供了即时的反馈因为它异步的从后端服务器上加载信息。然而使用Ajax可能使得用户为了等待异步的JavaScript和XML响应而开始把玩他的大拇指用户是否一直等待取决于Ajax如何被使用。例如在一个基于Web的邮件客户端中用户一直等待Ajax的请求结果从而找到他们想要查询的Email信息。记住异步并不意味着实时。为了提升性能优化Ajax的响应至关重要。最重要的一个途径是将请求结果缓存起来就像在“添加Expires和Cache-Contoll”一节中讨论的那样。一些其他的规则也适用于AjaxGzip压缩组件减少DNS查询压缩JavaScript避免重定向配置ETags让我们看看一个例子。一个Web2.0的邮件客户端或许自动使用Ajax来加载用户的地址簿。如果自从上次使用email web程序以来用户没有改变地址簿之前的地址簿响应数据可以从缓存中读取前提是Ajax缓存通过使用Expires或者Cache-Contolle头部实现。浏览器必须被通知什么时候使用之前的缓存地址簿数据或者请求新的数据。这可以通过为地址簿的Ajax地址添加时间戳来标注最后一次用户更改地址簿的时间从而实现上述目的例如t1190241612。如果地址簿自从上一次加载以来没有被改变时间戳不变浏览器会从缓存中获取地址簿数据从而减少了一个HTTP往返请求。如果用户改变了地址簿数据时间戳确保一个新的URL地址和缓存中的响应不同浏览器就向更新的地址簿入口请求数据。尽管Ajax响应报文被动态的创建但仅仅对单户起作用他们可以被缓存。这将使你的Web2.0应用的更快。尽早的清除缓存标签服务器端当用户请求页面无论如何需要200-500ms的时间让后端服务器生成一个页面。在这个时间内浏览器因为等待数据的到大而处于空闲的状态。在PHP中有flush函数。它能够将部分准备好了的HTML响应发送给浏览器使得浏览器可以开始加载组件而你的后端服务器忙于生成其他的HTML页面。在忙碌的后端和松闲中都可以看到这样做的好处。一个添加好的flushing的地方就在HEAD标签后因为html的Head标签通常容易生成并且允许包好任何的CSS和JavaScript文件这样浏览器开始并行请求数据而后端仍然在处理其他的东西。例如 …!—css, js-- /head ?php flush();? body …!—content--Yahoo! Search主导了这方面研究并且在真实的用户上进行测试从而证明使用这项技术的好处。用GET发送AJAX请求标签服务器端YahooMail团队发现当使用XMLHttpRequest时POST在浏览器中经历了两个步骤的处理先发送请求头部然后发送数据。所以最好使用GET仅仅使用一个TCP数据包发送请求除非你有很多的cookies。在IE中最大URL长度是2K如果发送多于2K的数据你就不能使用GET。一个让人感兴趣的个例是POST如果没有发送任何数据的时候的行为类似于GET。基于HTTP的规范GET为的是获取信息所以在仅仅只是请求数据的时候使用GET是有意义的从语义上而和向服务器端发送数据则不同。延迟加载模块标签内容你可以仔细看下你的页面问问自己“为了完成页面的起始渲染哪些是绝对需要的”其余的内容和组件可以稍后加载。JavaScript是很适合置于onload事件触发之前或之后。例如如果你使用JavaScript或者库来完成拖动和动画的任务这些可以等待。因为在页面上拖动元素在初始渲染之后才可用。其他的可以在加载事件之后获取的包括隐藏的内容在用户的某个操作后出现的内容或者图片折叠。有些工具可以帮助你达成目的YUI Image Loader允许你延迟加载位于折叠区域之后的图片并且YUIGet Utility是一个简单的方法来实时加载JS和CSS。例如可以使用Firebug面板看看Yahoo!Home Page的加载状况。当性能目标和其他的web开发最佳实践相关联时。这种情况下渐进增强的方法告诉我们JavaScript可以提升用户体验但是你不得不确认页面在没有JavaScript的情况下也是可用的。所以当你确认页面工作良好你可以通过一些后加载的脚本提升页面随后当你的拖动效果和动画效果发挥效应时会给你带来跟多的喝彩。继续阅读高性能网站建设的最佳实践三原文译自http://developer.yahoo.com/performance/rules.html 转载于:https://blog.51cto.com/moviejs/1305404
http://www.sadfv.cn/news/22474/

相关文章:

  • 哪家公司建5g基站新手建站广告联盟赚钱
  • 网站首页布局设计模板吉林住房和城乡建设厅网站
  • 什么网站有做qq群排名的用ps做企业网站分辨率是多少
  • 万盛建设局官方网站阿里云如何购买域名
  • 网站除了域名还要什么双线主机可以做彩票网站吗
  • 网站搭建的流程及费用是多少?apache 创建网站
  • 统一企业官方网站优秀网站案列
  • 物流网站怎么做的品牌网站建设哪好
  • 大连哪家做网站比较好网站开发的源码
  • 昆明网站建设织梦营销网站建设的重要性
  • 西部数码网站管理助手 2008企业网站优化问题
  • 密云上海网站建设ui设计的细分研究方向包含哪几项
  • 重庆 网站设计中国建设银行网站进不去
  • 小程序做网站上海大型网站制作公
  • 英国做电商网站有哪些方面dedecms迁移wordpress
  • 哪些网站设计的比较好google搜索下载
  • 我要做一个网站 需要营业范围吗网站设计市场价
  • 网站建设制作培训辽宁省城乡和住房建设厅网站
  • 新钥匙建站做php网站方向要会什么
  • 前端 模板 网站建设银行安徽分行招聘网站
  • 大华天途建设集团网站北京百度推广电话
  • 网站视频上传怎么做网站设计建设介绍
  • 网站的策划做推广wordpress 全景图插件
  • 网站的销售怎么做深圳网页制作培训班
  • 比较好的摄影网站景德镇做网站的公司
  • 淘宝关键词排名怎么查百度seo手机
  • 网站建设哪家更专业长沙县星沙人才招聘网
  • 电子商务网站建设与规划总结wordpress临时关闭
  • 可以建网站网站开发资料
  • vs2010网站开发教程wordpress 支付宝