Web应用2

计算机网络所有笔记链接

Cookie技术

前面提到HTTP的服务是 无状态的,这简化了服务器的设计,但是Web站点还是很有必要具有能够识别用户的功能的。比如说你至少能够把我密码啥的记录了吧,我总不能访问一次就要重新输入密码吧,因此就有了Cookie技术。Cookie技术的四个组件:

  1. 在HTTP的 响应报文中的一个Cookie首部行
  2. 在HTTP的 请求报文中的一个Cookie首部行
  3. 用户端系统(也就是浏览器)中保留一个Cookie文件
  4. 位于Web站点的一个后端数据库

通过一个示例简单说明一下

假定用户Susan使用网络访问Amazon.com,假定她过去访问过ebay站点

  1. 她发送了一个普通的HTTP请求报文到服务器,该Web站点就要产生了一个 唯一的标识码,并且作为后端数据库的一个表项(就是你可以通过这个标识码索引数据库中存储的你的一些内容什么的啦)
  2. 接下来Web服务器用一个包含 **Set-Cookie:**首部的HTTP响应报文对Susan的浏览器进行响应,其中Set-Cookie:首部含有这个识别码1678 ,那么浏览器就要记住它:在管理的Cookie文件中添加 服务器主机名和Set-Cookie:首部中的识别码,在访问那个服务器主机的时候就可以直接发送Cookie让服务器知道是你这个家伙
  3. 因为Susan访问过这个站点了,所以在此访问的时候浏览器就会查询一下Cookie文件中当时访问该网站对应的识别码是啥子,然后就放到HTTP请求报文中去。那我服务器再接受到请求报文后一看(通过识别请求报文中的Cookie对应的标示码):哇偶,原来是你这个家伙又来了!
  4. 服务器已经认出你来了,那就赶紧通过标识码看看数据库中存储的以前你做过的痕迹,比如说你在购物车放了啥东西啊什么的就显示出来再发给你。
  5. 一星期后Susan再次访问该网站,当然服务器还是通过Cookie认出你这个家伙了,不仅认出你来了,还通过数据库中你的访问数据通过一些技术给你推荐商品。比如说你购物车全是零食(吃货无疑了),那服务器肯定会给你推荐零食的…

上述就是Cookie技术的简要描述了,确实非常滴好用,我们访问一些站点的时候就不需要再重复的输入姓名啊密码啊啥的,但是这确实也是一种隐患。你所有的用户隐私都会被服务器给记录下来的,有一些公司就会将信息卖给第三方的公司,是谁我就不提了吧鹅鹅鹅鹅鹅鹅…

Cookie的作用

  • 身份认证
  • 购物车
  • 推荐
  • Web e-mail

Web缓存

Web缓存器也叫做 代理服务器,Web缓存器有着自己的磁盘存储空间,并且在存储空间中保存 最近请求过的对象的副本

假定浏览器正在访问http://www.someschool.edu/campus.gif

  1. 浏览器创建一个到Web缓存器的TCP连接,并向Web缓存器中的对象发送一个THHP请求
  2. 那我Web缓存器就要检查一下,我的本地是不是存储过你要请求的对象的副本,如果有的话就不用再向origin server申请了,直接将副本通过HTTP响应报文返回该对象
  3. 如果没有这个对象的话,它就打开一个与origin server的TCP连接。此时Web缓存器就成为了客户了,向origin server发送报文请求,然后origin server将对象发送给Web缓存器
  4. 当Web缓存器接受到对象之后,就会在本地存储空间存储一份副本,然后向客户的浏览器用 HTTP响应报文发送这个副本

Web缓存器通常由ISP购买并且安装,例如大学可能在校园网上安装一台缓存器。

那么Web缓存器有什么好处值得让我们使用呢?

  1. Web缓存器可以大大减少对于客户端请求的响应时间,尤其是当客户与origin server之间的瓶颈带宽远低于客户与代理服务器之间的瓶颈带宽
  2. Web缓存器能够大大减少一个机构的接入链路到因特网的通信量。通过减少通信量,这个机构就不必急于增加带宽,从而降低了费用

样例演示

题目背景就是P73页(绝对不是因为我懒得打字了)或者看一下hit-networking

总的响应时间: 从浏览器请求一个对象到接收到该对象的总时间,是局域网时延、接入时延、和因特网时延之和
局域网上的流量强度:(15个请求/s)∗(1Mb/请求)/(100Mbps)=0.15局域网上的流量强度:(15个请求/s) * (1Mb/请求) / (100Mbps) = 0.15 局域网上的流量强度:(15个请求/s)∗(1Mb/请求)/(100Mbps)=0.15

链路上的流量强度:(15个请求/s)∗(1Mb/请求)/15Mpbs=1链路上的流量强度:(15个请求/s) * (1Mb/请求) / 15Mpbs = 1 链路上的流量强度:(15个请求/s)∗(1Mb/请求)/15Mpbs=1

流量强度如果达到了1就是不能够接受的程度了,链路上面的时延就回变得非常大并且无限增长

那么能否通过增加带宽(15Mpbs) - > (100Mbps)呢? 太贵了

另一种方式:增设Web缓存器,实践中的 命中率(就是一个缓存器满足请求而不用通过origin sever的比率)是0.4,就是40%的请求不需要通过origin server进行响应,因此只有60%的请求会被接入链路。那么链路上面的流量强度从 1.0 - > 0.6,看似数字不起眼,其实降低了非常多的时延

最终的平均时延:
0.4∗(0.010秒)+0.6∗(2.01秒)0.4 * (0.010秒) + 0.6 * (2.01秒) 0.4∗(0.010秒)+0.6∗(2.01秒)

条件GET方法

问题:假设我每天都会请求看一下新闻,我的缓存服务器一看:哦,你又要看新闻,那我就把之前缓存的新闻给你看吧,然后就将昨天的发过来了…

这显然不是我们想要的对吧,因此我们就可以用条件GET来判断一下你缓存的是不是最新版本的,还记得HTTP报文格式中的last modified吗, 就是最近一次的修改日期。我们可以让缓存服务器发送一条比对 我缓存的内容和你的版本是否是一致的(万一我昨天缓存的,你今天版本更新了,那我不能给客户发旧版的吧),因此就发送了一条 条件GET方法比对一下时间,如果是最新版本的就直接发送给用户了,如果不是那就更新一下再给用户

请求条件GET的格式:

  • 请求报文使用GET方法
  • 请求报文中包含”If-Modified-Since:“首部行

如果origin server返回的是304 Not Modified,那么就代表缓存服务器中的是最新版的

计算机网络-自顶向下-Web应用2(Cookie、Web缓存、条件GET详解)相关推荐

  1. .net System.Web.Caching.Cache缓存类使用详解(转载)

    转自:http://www.cnblogs.com/virusswb/articles/1681561.html net System.Web.Caching.Cache缓存类使用详解 System. ...

  2. Java Web中的EL(表达式语言)详解

     Java Web中的EL(表达式语言)详解 表达式语言(Expression Language)简称EL,它是JSP2.0中引入的一个新内容.通过EL可以简化在JSP开发中对对象的引用,从而规范页面 ...

  3. WEB前端之网页设计③----最新最全详解/如何在网页上创建表格

    WEB前端之网页设计③--最新最全详解/如何在网页上创建表格 一.表格效果图1: <table border="0px" cellspacing="1px" ...

  4. Web网络安全漏洞分析,SQL注入原理详解

    本文主要为大家介绍了Web网络安全漏洞分析SQL注入的原理详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪 一.SQL注入的基础 1.1 介绍SQL注入 SQL注入就是 ...

  5. mysql select 缓存_mysql select缓存机制使用详解

    mysql Query Cache 默认为打开.从某种程度可以提高查询的效果,但是未必是最优的解决方案,如果有的大量的修改和查询时,由于修改造成的cache失效,会给服务器造成很大的开销,可以通过qu ...

  6. 并发编程之CPU缓存架构缓存一致性协议详解(二)

    并发编程之CPU缓存架构&缓存一致性协议详解 CPU高速缓存(Cache Memory) CPU高速缓存 在CPU访问存储设备时,无论是存取数据抑或存取指令,都趋于聚集在一片连续的区域中,这就 ...

  7. 并发-MESI缓存一直协议详解

    并发-MESI缓存一直协议详解 CPU缓存一致性协议MESI CPU高速缓存(Cache Memory) CPU为何要有高速缓存 目前流行的多级缓存结构 多核CPU多级缓存一致性协议MESI MESI ...

  8. MESI缓存一致性协议详解

    MESI缓存一致性协议详解 1.CPU为何要有高速缓存 CPU中内置了少量的高速缓存以解决I\O速度和CPU运算速度之间的不匹配问题. 带有高速缓存的CPU执行计算的流程 程序以及数据被加载到主内存 ...

  9. php httponly_PHP设置Cookie的HTTPONLY属性方法详解

    下面小编就为大家带来一篇PHP设置Cookie的HTTPONLY属性方法.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 httponly是微软对cookie做的扩展,这 ...

  10. 修改conda缓存路径:详解如何将Anaconda缓存位置更改

    修改conda缓存路径:详解如何将Anaconda缓存位置更改 在使用Anaconda进行Python开发时,我们经常需要使用conda来管理第三方库和环境.但是,使用默认缓存路径时,conda会将下 ...

最新文章

  1. 作为一个部门经理,该如何带好下属?
  2. WebService与使用风格RPC/SOA/REST
  3. python之多线程编程(一):基本介绍
  4. android 高度上分权重,Android LinearLayout weight权重使用
  5. 容器化时代到来!跳转机分配问题终于“有救”了
  6. 湖南理工学院计算机专业课表,下学期课表“新鲜出炉”,你查了吗?
  7. python range函数怎么表示无限_python range函数怎么用
  8. Union/find--不相交集类(并查集)
  9. android获得手机号码代码
  10. 中国AI军团争霸机器阅读理解大赛,搜狗创下全球新纪录
  11. aov建立Java模拟,JAVA
  12. 设计模式——“signleton”
  13. 30而立--男人必须明白的事
  14. 使用栈完成高级计算器
  15. wow插件初级基础知识及安装指南
  16. 手机通过蓝牙与电脑共享网络
  17. js浏览器的打印和去除页眉和页脚
  18. Unix BSD Linux的口令机制初探
  19. 程序员工作中用一机多屏或者大显示器的好处
  20. IONIC--如何使用IONIC

热门文章

  1. VC、PE和天使投资是什么意思?有什么区别?
  2. 服装生产管理系统软件都有哪些实用功能?应该如何选购?
  3. 单细胞测序流程(六)单细胞的细胞类型的注释
  4. Lucene布尔查询
  5. 如何把光遇android和平切换成ios,光遇账号怎么切换到另一设备 换手机登录方法...
  6. 【信号处理】基于双音多频(DTMF)信号检测含Matlab源码
  7. mysql数据库迁移之mysql-dump
  8. Gradle Windows安装
  9. YOLOv5训练-wandb
  10. 并发操作之——并发编程三要素