浏览器打开网页的过程
理解实际的客户端(浏览器)、服务端(比如iis)
域名解析(过程描述)
发送浏览请求
包含方法(get、post)
http协议版本
系统的语言
是否接受压缩
发送cookies
用户代理(User-Agent Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)))
referer等
浏览器返回
包含状态码:200、302、304、404、500
(http是一个无状态的协议,cookies和session的作用和原理)
如何在代码里强制动态页面可以被缓存
'set Page Last-Modified Header:
'Converts date (19991022 11:08:38) to http form (Fri, 22 Oct 1999 12:08:38 GMT)
Response.AddHeader "Last-Modified", DateToHTTPDate(Now())
'The Page Expires in Minutes
Response.Expires = 10
'Set cache control to externel applications
Response.CacheControl = "public"
如何避免缓存带来的弊端
在访问网址后可加虚拟参数来强制刷新,如随机数
PS:如何正确的获取客户端的ip地址
注意Request.ServerVariables("HTTP_X_FORWARDED_FOR")和Request.ServerVariables("REMOTE_ADDR")的区别
注意被保留的3段私网ip地址的辨别
注意如果是通过多层代理来访问,则要控制好如何取离客户最近的公网ip地址
浏览器开始解析
加快页面的解析和执行的方法
减少页面结果代码量和图片等的大小
图片、脚本等和页面的分离,可以在输出时改写资源文件的绝对路径(asp不行,.net可以)
客户端脚本和样式尽量独立到引用文件里,便于缓存
将小图片整合到一个图片中,用样式表来控制图片的不同部位的显示
样式文件靠网页开头输出,脚本文件在页底输出
需要缓存的文件可以设置过期时间,比如:Expires: Thu, 15 Apr 2010 20:00:00 GMT,对于要刷新的可以在文件名后加参数来强制刷新
避免重定向,比如该用“/”结尾的网址就写上“/”,不要让浏览器自动重定向
我补充两点
1.提前加载,如果一张图片在下一个页面要用到,而当前页面的压力又不很大的情况下,可以将下一页面的部分内容放到前面来加载,有兴趣的去研究一下www.google.com的首页
2.用到时再加载 对于某些特殊操作要用到的图片或脚本可以采取用到时再加载的方式进行,比如实现某一效果需要的脚本,可能在页面打开不做操作的时候并不需要用到,那么这样的提前加载就是浪费 典型的网站比如 www.yahoo.com
从上面举例的网站我们就可以看出,合理利用带宽是多么的重要