zoukankan      html  css  js  c++  java
  • 提高页面访问速度

    提高页面访问速度

    参考
    https://developer.yahoo.com/performance/rules.html
    http://www.ghugo.com/performance-rules-web-site/(中文)

    减少请求

    • 图片合并
    • HTTP1.1 Keep-Alive

    合并JS

    根据HTTP规范, 浏览器每次从一个域名最多只能同时下载两个文件, 而在下载脚本期间, 浏览器不会下载任何文件(即便是来自不同域名也不会下载), 所有资源都要等脚本加载完毕后才下载 [JavaScript编程艺术第二版 73]

    GET缓存

    GET 一个相同的URL 只有一个结果[相同是指 整个URL字符串完全匹配]
    所以 第二次访问的时候 如果 URL字符串没变化 浏览器是 直接拿出了第一次访问的结果

    若我希望GET每次都是新的结果 则需加上 ?+new Date();,[总之就是使每次访问的URL字符串不一样的]

    对于AJAX的GET请求还可以这样

    • setRequestHeader("If-Modified-Since","0");
    • setRequestHeader("Cache-Control","no-cache");

    GET POST究竟有什么区别

    参考http://www.zhihu.com/question/31640769

    一般来说 GET 传送数据量有限(某些ie版本的限制),安全性低,会被缓存,而POST反之。
    enter image description here

    • 请求中的URL可以被手动输入
    • 请求中的URL可以被存在书签里,或者历史里,或者快速拨号里面,或者分享给别人。(搜索引擎,可以用get分享搜索结果)
    • 请求中的URL是可以被搜索引擎收录的。
    • 带云压缩的浏览器,比如Opera mini/Turbo 2, 只有GET才能在服务器端被预取的。
    • 请求中的URL可以被缓存。

    get表达的是一种幂等的[也就是请求1次和n次是一样的],只读的,纯粹的操作,即它除了返回结果不应该会产生其它副作用(如写数据库),因此绝大部分get请求(通常超过90%)都直接被CDN缓存了,这能大大减少web服务器的负担。

    既然GET是幂等 所以用来添加删除之类的操作是不合适的

    为什么GET不安全

    显然Chrome Fiddler等都是可以看到POST请求中的数据的 所以说GET的请求在地址栏中会被看到所以不安全这个说法并不成立
    当然了POST也只比GET安全那么一点点而已 所以HTTPS还是很有必要的

    • GET请求会被历史记录
    • 服务器会在日志中记录所有的GET请求 linux中是 access_log windows中是access.log这个文件, 而日志并没有记录POST

    MORE
    http://www.w3schools.com/tags/ref_httpmethods.asp
    http://stackoverflow.com/questions/198462/is-either-get-or-post-more-secure-than-the-other

    预加载

    后加载

    使用GET来完成AJAX请求

    服务端

    • 使用内容分发网络CDN
      是由一系列分散到各个不同地理位
      置上的Web服务器组成的,它提高了网站内容的传输速度.拥有最少网络跳数(network hops)和响应速度最快的服务器会被选定
    • 为文件头指定Expires或Cache-Control
    • Gzip压缩文件内容
    • 配置ETag

    css

    • 样式表置顶
      如果将样式表放在底部,浏览器会拒绝渲染已经下载的网页,因为大多数浏览器在实现时都努力避免重绘

    • 避免使用CSS表达式(Expression)

    • 使用外部文件JavaScript和CSS
      外部文件可以提高页面速度,因为JavaScript和CSS文件都能在浏览,器中产生缓存。内置在HTML文档中的JavaScript和CSS则会在每次请求中随HTML文档重新下载

    • 压缩JavaScript和CSS

    • 用link代替@import
      前面的最佳实现中提到 CSS 应该放置在顶端以利于有序加载呈现 因为@import规则有可能胡导致白屏现象,即使把@import规则放在文档的head标签中也是如此。import中的css将会后加载

    • 避免使用滤镜

    JS

    • 把脚本置于页面底部
      脚本带来的问题就是它阻止页面平行下载 HTTP1.1建议 每个主机名的并行下载内容不超过两个。如果你的图片放在多个主机名上,你可以在每个并行下载中同时下载 2个以上的文件。但是当下载脚本时,浏览器就不会同时下载其它文件了,即便是主机名不相同。
    • 削减JavaScript和CSS
    • 减少DOM访问
    • 开发智能事件处理程序
      如果你在一个div中有 10 个按钮,你只需要在div上附加一次事件句柄就可
      以了,而不用去为每一个按钮增加一个句柄。事件冒泡时你可以捕捉到事件并判断出是
      哪个事件发出的。

    其它

    • 减小Cookie的体积
      注意在适应级别的域名上设置 coockie 以便使子域名不受影响
    • 对静态内容的请求是无coockie的请求。创建一个子域名并用他来存放所有静态内容。
    • favicon.ico 要小而且可缓存
  • 相关阅读:
    Android获取当前时间的3中方法总结
    解决 C# .NET WebClient WebRequest请求缓慢的问题
    无刷新的批量图片上传插件.NET版
    <img>标签显示本地路径的图片的.NET解决方案
    无刷新分页
    Shader基本类型
    shader内置变量和函数
    Shader基础
    Lua中的基本函数库
    Lua中的操作系统库
  • 原文地址:https://www.cnblogs.com/cart55free99/p/4668540.html
Copyright © 2011-2022 走看看