`
jobar
  • 浏览: 340789 次
  • 性别: 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来整合两个代码基础的一种方式。其他形式还包括基于一些条件来引导用户,用重定向来连接两个网站很简单且只需要很少的代码量。
虽然重定向降低了开发的复杂性,但这也损害的用户的体验。整合两个后端代码还有其他的选择,但比起简单的重定向需要更多的开发工作,不过这样非但不会损害用户体验,还能使之改善。如果两个后端处于同一个服务器上,则他们的代码自己就能链接,如通过接口方式直接调用。
分享到:
评论

相关推荐

    高性能网站建设指南:前端工程师技能精髓

    在本书中,作者给出了14条具体的优化原则,每一条原则都配以范例佐证,并提供了在线支持。全书内容丰富,主要包括减少HTTP请求、EdgeComputing技术、ExpiresHeader技术、Gzip组件、CSS和JavaScript最佳实践、主页...

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

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

    高性能网站建设指南1

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

    Linux高性能服务器编程

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

    [完整][中文][WEB安全测试].(美)霍普.扫描版.pdf

    [WEB安全测试].(美)霍普.扫描版.pdf (美)霍普 等 著 傅鑫 等 译 出 版 社:清华大学出版社 ISBN:9787302219682 出版时间:2010-03-01 版 次:1 页 数:281 装 帧:平装 开 本:16开 所属分类:图书 &gt; ...

    asp.net知识库

    动态调用对象的属性和方法——性能和灵活性兼备的方法 消除由try/catch语句带来的warning 微软的应试题完整版(附答案) 一个时间转换的问题,顺便谈谈搜索技巧 .net中的正则表达式使用高级技巧 (一) C#静态成员和...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    Chrome Frame 会把最新版的Chrome Webkit 内核和JavaScript 引擎注入到IE中, IE浏览器将获得Chrome的性能和功能 目录 摘要 I ABSTRACT II 专业名词清单 III 第一章 绪论 1 1.1 研究背景与意义 1 1.2国内外相关...

    django-docs-2.2-zh-hans.zip

    性能和优化概述 地理框架 GeoDjango 想要成为一个世界级的地理 Web 框架。尽可能简化构建 GIS Web 应用程序的流程,和利用空间化数据的能力是它的目标。 常用的 Web 应用程序工具 Django 提供了多种开发 Web 应用...

    ASP.NET MVC 3高级编程

    9.3.1 高层次请求的路由管道 230 9.3.2 路由数据 230 9.4 自定义路由约束 231 9.5 web forms和路由机制 232 9.6 小结 233 第10章 nuget 235 10.1 nuget概述 235 10.2 nuget安装 236 10.3 以包的形式添加库 ...

    Hadoop实战中文版

    10.5.4 执行优化 10.6 用户定义函数 10.6.1 使用UDF 10.6.2 编写UDF 10.7 脚本 10.7.1 注释 10.7.2 参数替换 10.7.3 多查询执行 10.8 Pig 实战——计算相似专利的例子 10.9 小结 第11章 Hive及Hadoop群 ...

    Hadoop实战(陆嘉恒)译

    用Pig编程10.1 像Pig 一样思考10.1.1 数据流语言10.1.2 数据类型10.1.3 ...优化10.6 用户定义函数10.6.1 使用UDF10.6.2 编写UDF10.7 脚本10.7.1 注释10.7.2 参数替换10.7.3 多查询执行10.8 Pig 实战——计算相似专利的...

    Hadoop实战

    18710.5.3 关系型运算符 18910.5.4 执行优化 19610.6 用户定义函数 19610.6.1 使用UDF 19610.6.2 编写UDF 19710.7 脚本 19910.7.1 注释 19910.7.2 参数替换 20010.7.3 多查询执行 20110.8 Pig实战——计算相似专利的...

    Grails权威指南

     7.6 用重定向控制流程  7.7 使用chain方法构造模型(model)  7.8 显示响应(response)  7.8.1 显示文本  7.8.2 显示指定的视图  7.8.3 显示标记(markup)  7.9 拦截操作  7.9.1 ...

    Hadoop实战中文版.PDF

    724.5.4 通过Aggregate包使用Streaming 754.6 使用combiner提升性能 804.7 温故知新 834.8 小结 844.9 更多资源 84第5章 高阶MapReduce 855.1 链接MapReduce作业 855.1.1 顺序链接MapReduce作业 855...

    TCP/IP技术大全(中文PDF非扫描版)

    还介绍了如何使用TCP/IP应用程序,包括远程登录、FTP、Web浏览等。 目 录 译者序 前言 第一部分 TCP/IP基础 第1章 开放式通信模型简介 1 1.1 开放式网络的发展 1 1.1.1 通信处理层次化 2 1.1.2 OSI参考模型 3 1.1.3...

    iuhyiuhkjh908u0980

    PrettyFaces: EL API访问PrettyContext 支持JSF 1.1 增强了错误页面和servlet重定向 PrettyFaces是一个JSF1.2和JSF2.0的扩展,用来创建便于书签收藏、漂亮的网址。 PrettyFaces优雅的解决了这个问题,包括诸如功能:...

    perl语言脚本文档说明

    13.3 练习:另一个游戏——迷宫 155 13.4 课时小结 157 13.5 课外作业 157 13.5.1 专家答疑 157 13.5.2 思考题 158 13.5.3 解答 158 13.5.4 实习 158 第14学时 使用模块 159 14.1 模块的概述 159 14.1.1 ...

    24日学好Perl语言

    13.3 练习:另一个游戏——迷宫 155 13.4 课时小结 157 13.5 课外作业 157 13.5.1 专家答疑 157 13.5.2 思考题 158 13.5.3 解答 158 13.5.4 实习 158 第14学时 使用模块 159 14.1 模块的概述 159 14.1.1 读取关于...

    perl学习文档

    13.3 练习:另一个游戏——迷宫 155 13.4 课时小结 157 13.5 课外作业 157 13.5.1 专家答疑 157 13.5.2 思考题 158 13.5.3 解答 158 13.5.4 实习 158 第14学时 使用模块 159 14.1 模块的概述 159 14.1.1 读取关于...

Global site tag (gtag.js) - Google Analytics