`
jobar
  • 浏览: 349397 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

高性能web网站优化原则11——避免重定向

 
阅读更多
重定向(redirect)将用户从一个URL路由到另一个URL。
重定向的类型:当web服务器向浏览器返回一个重定向时,响应中就会包含一个3xx的状态码,表示用户代理必须进一步操作才能完成请求,下面是几种状态码:
• 300 Multiple Choices (based on Content-Type)
• 301 Moved Permanently
• 302 Moved Temporarily (a.k.a. Found)
• 303 See Other (clarification of 302)
• 304 Not Modified
• 305 Use Proxy
• 306 (no longer used)
• 307 Temporary Redirect (clarification of 302)
304并不是真的重定向,它用来响应GET请求,避免已经存在于缓存中的数据再次被下载。306已被弃用
301和302用的最多,303和307是在HTTP规范1.1中添加的,用来澄清对302的使用,但几乎没人使用303和307,绝大部分还在使用302.下面是一个301的例子:
HTTP/1.1 301 Moved Permanently
Location: http://www.baidu.com
Content-Type: text/html
浏览器自动将用户重定向到Location指定的url。301和302响应不会被缓冲,除非有Express或cache-contrl头。还有其他方法可以自动将用户重定向到其他url,例如:
<meta http-equiv="refresh" content="0; url=http://stevesouders.com/newuri">
用js脚本也可以用户只需重定向,例如将document.location=www.sohu.com即可。最好的技术是使用标准的3xx状态码,这主要是为了确保后退按钮能正常工作。参见w3c的文章Use standard redirects: don’t break the back button!” at http://www.w3.org/QA/Tips/reback.

重定向会降低网站性能
重定向延迟了整个html文档的下载,在html文档下载完成之前,页面不会呈现任何内容,也不会下载任何组件。在用户和html文档之间重定向延迟了页面中的所有组件及内容

重定向之外的其他选择
重定向是解决很多问题的简单方式,但最好使用其他不会减慢页面加载速度的解决方案。

缺失结尾的/
有一种重定向最为浪费发生的也很频繁,但web开发者通常都没有意识到它(我从来也没有意识到,╮(╯_╰)╭),发生在url的结尾必须出现/而没有出现时。访问http://www.aaa.com/example时会导致一个301的响应,包含了一个到http://www.aaa.com/example/的重定向,唯一的区别就是结尾多了一个/,当确实结尾/时发送重定向的理由是——它允许自动索引且能获得与当前目录相关的url(例如logo。gif),然后很多流行的web页面并不依赖自动索引,而是依赖特定的url和处理器。

连接网站
将用户从旧的url转移到新的url的最简单方式就是重定向,重定向是使用定义良好的API——URL来整合两个代码基础的一种方式。其他形式还包括基于一些条件来引导用户,用重定向来连接两个网站很简单且只需要很少的代码量。
虽然重定向降低了开发的复杂性,但这也损害的用户的体验。整合两个后端代码还有其他的选择,但比起简单的重定向需要更多的开发工作,不过这样非但不会损害用户体验,还能使之改善。如果两个后端处于同一个服务器上,则他们的代码自己就能链接,如通过接口方式直接调用。
分享到:
评论

相关推荐

    高性能网站建设指南2 中文版 高性能网站建设指南(中文版)

     《高性能网站建设指南》一书介绍了如何针对网站中的Ajax、CSS、JavaScript、Flash和图片进行性能优化。每个性能规则都提供了示例,在本书的配套网站上可以找到代码片段。这些规则包括:  •减少HTTP请求 •使用...

    高性能网站建设指南1

     《高性能网站建设指南》一书介绍了如何针对网站中的Ajax、CSS、JavaScript、Flash和图片进行性能优化。每个性能规则都提供了示例,在本书的配套网站上可以找到代码片段。这些规则包括:  •减少HTTP请求 •使用...

    亿级Web系统搭建——单机到分布式集群

    ### 亿级Web系统搭建——单机到分布式集群 随着互联网技术的发展以及用户数量的急剧增加,Web系统面临着巨大的挑战。特别是当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,其面临的性能压力会...

    ASP.NET源码——UrlRewriter .NET v2.0 RC1 (For .Net2.0) 问沫工作室优化版.zip

    总的来说,这个ASP.NET源码——UrlRewriter .NET v2.0 RC1 (For .Net2.0) 问沫工作室优化版为.NET 2.0环境下的Web开发者提供了一个强大且易用的URL重写工具,有助于提升网站质量和用户体验。通过深入理解和熟练运用...

    看透 Spring MVC 源代码分析与实践 —— 网站基础知识.docx

    详解 Spring MVC 源代码分析与实践 —— 网站基础知识 本文将从网站架构、网络传输、数据库优化、缓存、页面静态化、分布式数据库、NoSQL 和 Hadoop、高并发解决方案、应用和静态资源分离、CDN 底层优化等方面对 ...

    web服务器.rar

    Nginx是一款高性能、高并发的Web服务器,由Igor Sysoev开发,因其反向代理、负载均衡和邮件服务器功能而广受赞誉。Nginx以其事件驱动的异步非阻塞模型而闻名,这使得它在处理大量并发连接时表现优秀,尤其适合高流量...

    Linux高性能服务器编程

    《Linux高性能服务器编程》共17章,分为3个部分:第一部分对Linux服务器编程的核心基础——TCP/IP协议进行了深入的解读和阐述,包括TCP/IP协议族、TCP/IP协议,以及一个经典的TCP/IP通信案例;第二部分对高性能...

    ASP.NET源码——利用handler生成静态页面的完整解决方案.zip

    ASP.NET是一种基于.NET Framework的服务器端网页开发技术,由微软公司推出,用于构建功能丰富的、高性能的Web应用程序。本解决方案的标题"ASP.NET源码——利用handler生成静态页面的完整解决方案.zip"暗示了我们将...

    ASP.NET源码——搜客来一虚拟主机绑多个域名.zip

    ASP.NET 是微软公司推出的一种基于.NET Framework的Web应用程序开发平台,它为开发者提供了丰富的功能和工具,用于构建高性能、可伸缩的Web应用。这个源码包“搜客来一虚拟主机绑多个域名”是针对ASP.NET环境下的一...

    JAVA遇见HTML——JSP篇

    【JAVA遇见HTML——JSP篇】是一门适合初学者的课程,主要讲解了Java与HTML在Web开发中的结合,特别是JSP(Java Server Pages)的...在实际的系统开发中,结合Servlet和JSP可以构建出高性能、高可维护性的Web应用程序。

    ASP.NET源码——UrlRewriter.NET地址重写示例程序3阶段.zip

    ASP.NET 是微软开发的一种用于构建动态网站、web应用程序和web服务的开源框架。在这个特定的压缩包中,我们关注的是UrlRewriter.NET,这是一个用于ASP.NET的URL重写库。URL重写是一种技术,它允许开发者改变用户在...

    [详细完整版]WEB服务器.doc

    IIS提供了一个图形化的管理工具——Internet服务管理器,便于管理和监控Web服务。 - **Apache**:是最广泛使用的开源HTTP服务器,尤其在UNIX和LINUX系统中。Apache以其高可靠性、灵活性和可扩展性而闻名,支持多种...

    ASP实例开发源码——简单 ASP留言板.zip

    ASP(Active Server Pages)是一种微软公司开发的服务器端脚本环境,用于生成动态网页或Web应用程序。这个实例开发源码——简单ASP留言板,是初学者学习ASP基础和交互式功能的良好素材。通过分析和理解这个源码,...

    安卓Android源码——加载网页进度条.zip

    - **WebViewClient**:主要处理网页加载的核心逻辑,比如页面的加载、重定向、错误处理等。如果你想要监听网页的加载进度,你需要覆盖`onPageStarted()`和`onPageFinished()`方法。 - **WebChromeClient**:则提供...

    struts2.2.1.1帮助文档——英文

    Struts2是一个强大的Java web应用程序框架,用于构建和维护可扩展、高效且易于管理的Web应用。...通过阅读这个英文帮助文档,开发者可以深入了解框架的工作原理,从而更好地利用Struts2构建高性能的Java web应用。

    Tomcat 配置与优化方案详解

    Tomcat是Apache软件基金会...在进行配置和优化时,应遵循以下原则:仅修改已知问题的配置项,避免无差别地改变设置,以免引入新的问题。同时,优化工作最好在开发和测试环境中先行验证,确认无误后再应用到生产环境。

    安卓Android源码——浏览器的源码 可以下载修改跳转指定的网址.rar

    8. **性能优化**:高性能的浏览器会考虑缓存策略、预加载和异步加载等技术,以提高用户体验。源码中可能涉及到了这些优化策略。 9. **UI设计**:Android Studio提供了丰富的UI组件和布局,源码中的XML布局文件将...

Global site tag (gtag.js) - Google Analytics