zoukankan      html  css  js  c++  java
  • 高性能建站指南笔记

    压缩css和js脚本是非常值得的。
    根据经验,通常对大于1kb或者2kb的文件进行压缩。对图片进行压缩是得不偿失的。因为会消耗许多cpu资源(包括服务器端和客户端的)

    LoadModule expires_module modules/mod_expires.so

    Cache-Control:Private 禁用代理
    apache的版本与压缩组件的关系:1.3对应了mod_gizp 2.x对应了mod_deflate
    也就是:1.3的gizp功能由mod_gizp提供。那么2.x版本中的gzip功能由mod_deflate提供

    首页平均使用了6-7个脚本文件,1-2个css文件 soutuan.com使用了13个js文件请求


    精简js代码工具:雅虎公司jsmin DoJocompressor

    使用yahoo!UI进行ajax开发,好处在哪里?

    使用keep-Alive那么就意味着:保持着连接的状态。tcp连接是打开的。此时不需要查找dns

    dns缓存到底可以提高什么呢?输入www.soutuan.com,那么首先浏览器或者操作系统会向dns服务器发出查找ip的请求。这一段需要时间

    怎么测试我的页面产生多少dns查找时间?






    为什么需要将样式放在顶部才好?
    就是为了实现,当下载页面的时候,页面逐步呈现的效果。而不是让用户看到一个残缺的页面。就比如打开页面的时候变乱了。根据一个原理:组件(css,js)是按照代码在文档中的顺序进行下载的。
    而把样式表放在顶部,会阻碍页面逐步呈现(难怪,在ie下面经常出现空白现象)
    只有在ie下才会产生这种延迟现象。也就是网速一慢的话,就会因为延迟而出现空白的效果。而不是逐步呈现的效果
    ie有一种特效:尽管已经下载完所有组件,但是依然会等到样式表下载完全才会呈现页面

    css放在底部的示范:
    http:stevesouders.com/hpws/css-bottom.php

    总结:样式表放在顶部还是在底部不会影响整个 页面的下载时间。调整位置后,页面的整体下载时间还是不变的。
    那么,为什么要换呢?就是想通过一种逐步呈现的现象,让用户感觉页面现在速度更快了。

    无样式内容的css闪烁 http://stevesouders.com/hpws/css-fouc.php
    就是。等到下载完成后,页面的效果马上进行了改变,像闪烁一样的



    304状态码就是告诉浏览器,我这个服务器上的该文件自生成日期来一直没有修改过。并且就不再发送响应体了(就是具体的css,html,js文件内容)

    expires头部信息简单理解:?里面是指定了该文件的一个过期时间(表示到该时间为止,之前的响应才是有效的。之后无
    效),告诉浏览器,在该时间之内,你可以使用本地保存的副本。
    不足:要求客户端的时间和服务器端的时间保持一个同步才行


    替代expires的解决方案是max-age,假如同时使用两者,max-age会重写expires
    使用mod_expires模块的一个命令可以配置,文件的过期时间是请求后的多久。秒数计算

    expires的根本目的是什么?减少http的请求。而不是减少文件(css,js)的传送。因为不管你是否使用了expires,
    假如浏览器文件已经过期了,都会从服务器下载新的文件的。expires要做的只是,马上就知道已经过期与否,这样就不需要去请求一次(避免了一次请求),以便确定是否过期
    响应中就已经发给浏览器,我这个文件是否过期吗?

    If-Modified-Since是浏览器发给服务器的请求头。服务器接到该值后,就会将last-modified与该值进行比较,以此确定是否有更新(没有更新就返回 304 响应)


    If-Modified-Since:服务器发过来的该文件的最后服务器修改时间。缓存在本地


    只对网页进行缓存:
    <meta http-equiv="Cache-Control" content="max-age=7200" />
    <meta http-equiv="Expires" content="Mon, 20 Jul 2009 23:00:00 GMT" />

    对该页面的js,css等文件无效的

    max-age与expires的区别:max-age的值格式是:秒。expires的时间格式是一具体的时间,比如:Thu, 01 Dec 1994 16:00:00 GMT (必须是GMT格式)也就是在这个时候过期。而max-age比如是7200秒。那么就是在该页面被该用户请求的时间后7200秒后过期。



    expires也可以不设置成具体的日期,而是以Atime格式。也就是相对最后访问时间多少秒后过期。

    expires和cache-control的另外一种区别:Expires头内容和Cache-Control头的max-age指令。这样的说法,说明。expires和Cache-Control都是同一级别的。是一个头。为文档生成Expires和Cache-Control头是mod_expires模块的作用 cache-control是http1.1才引入的。以前没有。



    ExpiresByType 和 ExpiresDefault 指令就是设定具体的值。哪种类型的文件,设置expires的值
    前提:只有当ExpiresActive On才会按照上面两个指令去生成头

    cache-control注意版本问题。是http1.1才引入的。而1.0并没有完全实现。

    Etages也是http1.1引入的。实体标签。entity tages

    etages也是跟if-modified-since类似方式。只是不是日期。而是标记,相当于一个版本。跟if-none-match(浏览器发送给服务器的)匹配。

    etages只适合使用在这样的情况:你的网站是宿主在同一台服务器上。如果在多台服务器就会带来问题。因为,etages是针对寄宿网站来说才是唯一的。真是无法解释这个?














    # access (read the file's contents)
    # change the status (modify the file or its attributes)
    # modify (change the file's contents)
    1。atime:最后一次读这个文件的时间,如使用more来读这个文件
    2。ctime:最后一次修改该文件的时间,如使用chmod来修改这个文件的属性
    3。mtime:最后一次修改该文件内容的时间,如使vi来修改这个文件的内容

    备注:这是刚毕业时候学习《高性能建站指南》记录下来的

  • 相关阅读:
    第四届图灵赛A题谷神的赌博游戏
    poj1562DFS
    数组-03. 冒泡法排序(20)
    数组-02. 打印杨辉三角(20)
    数组-01. 字符转换(15)
    循环-28. 求给定序列前N项和之六(15)
    循环-27. 求给定序列前N项和之五(15)
    循环-26. 求给定序列前N项和之四(15)
    循环-25. 求给定序列前N项和之三(15)
    循环-24. 求给定序列前N项和之二(15)
  • 原文地址:https://www.cnblogs.com/wangtao_20/p/1962241.html
Copyright © 2011-2022 走看看