前端层的复制是为了提高静态内容分发的性能和可扩展性。将静态内容的分发转由边缘服务器来完成是为了解决可扩展性的问题,因为这样做可以避免出现在对等点和广域网链路处的网络拥堵风险,而这两个地方的拥堵是网络延时的主要原因。
 
通过使用一个第三方的网络设施来加速静态内容的分发是一种提高内容分发网络边缘性能的常用方法。不过静态内容的分发仍然是一个棘手的工作,因为富媒体(rich-media)内容的使用已经变得越来越多,它产生的流量正在成为互联网流量的一个重要组成部分。将这类媒体内容的分发转移到接近客户端的地方,可以获得很大的好处,原因有二:首先由于这类内容的尺寸庞大,在对等点处的网络延时会使用户明显感觉到性能的下降;其次借助常用的HTTP流技术可以降低分发时间上的不确定性,使媒体的播放变得更加流畅。
 
由于多媒体内容的尺寸较大,所以通常只把每个多媒体内容中用户最感兴趣的部分(而不是全部)缓存在边缘服务器中,称分段缓存(segment caching)。一个多媒体资源中每个片段(fragment)的受欢迎度由用户的访问模式决定:如果用户采用(从头)连续访问的模式,那么通常使用连续缓存的方法,也就是存储资源的起始部分,以减小缓冲时间;如果用户的访问模式主要是媒体中的随机定位,那么就要使用不同的缓存技术,如交错缓存方法,这样可能会更加有效。
 
当待分发的Web内容是由片段(fragment)组装而成时,有人提出了将流内容分割为段(segment)的方法。这个方法要求边缘服务器做更多的工作,其前端层必须包含两个功能:为每个片段提供单独的缓存和片段的组装。作为一个独立的信息实体,每个片段可以包含描述其缓存能力的配置信息,该信息用来指示片段能否被缓存和它在网络上的存活时间(Time-To-Live,TTL),这就可以在片段(而不是在网页)的粒度上管理内容的新鲜度和生命周期。
 
当一个用户请求网页时,边缘服务器在它的缓存中找到该网页的片段,然后立刻将其组装起来。只有那些失去时效或没有被缓存的片段才从源服务器取。因此在边缘服务器上使用基于片段的缓存和动态组装方法对源服务器而言有两个好处:一是它不必完成组装页面的任务;二是它一般只需要分发页面的一小部分内容,也就是边缘服务器上那些失效或缓存中没有的片段。对于大部分由动态创建的网页构成的网络资源,基于片段的缓存技术可以在距离终端用户最近的边缘网络向用户提供这些内容,从用户对性能的感受可以发现这一技术已被证明能够有效地改善响应时间。不仅如此这一技术同样对边缘服务器有益:那些被不同网页共享的同个片段只需保存一份副本,这就大大提高了磁盘空间的利用率;同时它也能够降低边缘服务器上缓存的失效频度,因为网页中的不同部分只有在过期的时候才标记为“失效”。
 
衡量基于片段的缓存技术的常用标准是ESI(一种基于XML的标记语言),能够使用XML来区分内容是否应该缓存。内容提供商根据其开发环境制订相应的ESI规范,用来设计和开发业务逻辑以实现网页的产生和装配。除了将页面分解为片段这一基本功能(即使在一个有条件的方式下),ESI的功能还包括片段不可用时的异常处理以及对被缓存片段的失效性做出判断,所以ESI可以提供比TTL机制更强的一致性确保机制。
 
大多数支持基于片段的缓存技术的边缘服务器并不提供缓存之间的任何协作,也就是说这些缓存完全被作为独立的实体。这就使我们无法享受协作带来的好处,而采取协作的方式可以使边缘服务器发挥其潜在的缓存能力。基于片段的方法也面临与动态内容的类型相关的应用性问题以及网页的片段分解问题,而该方法的主要缺点都与这些问题有关。如果用户的请求序列具有高度的局部性同时源服务器上的内容更新不频繁,基于片段的缓存就能有效地应用。这个条件保证了片段的可缓存性参数足以用来管理内容的新鲜度,从而减轻了源服务器给缓存中的片段设置“失效”标志的负担。因为缓存、划分片段、组装片段等工作都是在每一个具体应用上进行,所以该技术很缺乏透明性。由于ESI代码必须加到原始代码上,这就需要完全修改网页的代码,因此ESI的性能就取决于网页的结构。对于同时为多个内容提供商分发内容的边缘服务器来说,上述对片段的人工辨识和标记几乎是无法承受的。
 
网防cdn专业提供国内外高防cdn加速服务
 
本文链接:http://www.f8i.com/news/349.html

CDN中前端层的复制的更多相关文章

  1. Java中Action层、Service层、Modle层和Dao层的功能区分

    一.Java中Action层.Service层.Modle层和Dao层的功能区分: 首先,这是现在最基本的分层方式,结合了SSH架构. modle层就是对应的数据库表的实体类.(即domain) Da ...

  2. 负载均衡技术在CDN中发挥着重要作用

    转载地址:http://www.qicaispace.com/gonggao/server/page01/info07.asp CDN是一个经策略性部署的整体系统,能够帮助用户解决分布式存储.负载均衡 ...

  3. java中Action层、Service层和Dao层的功能区分

    Action/Service/DAO简介: Action是管理业务(Service)调度和管理跳转的. Service是管理具体的功能的. Action只负责管理,而Service负责实施. DAO只 ...

  4. TCP/IP中链路层的附加数据(Trailer数据)和作用

    1.TCP/IP中链路层的附加数据是什么 在用wireshark打开报文时,链路层显示的Trailer数据就是附加数据,如图 2.如何产生 1.例如以太网自动对小于64字节大小的报文进行填充(未实验) ...

  5. 网站建设中前端常用的jQuery+easing缓动的动画

    网站建设中前端人员利用jQuery实现动画再简单不过了,只是要实现更酷的效果还需要插件来帮忙,easing就是一款帮助jQuery实现缓动动画的插件,经过试用,效果很不错! 下载该插件:jquery. ...

  6. 【Protle99SE】PCB中各层的含义【小汇】

    忽然发现,对solder和paste,layer和plane这两对有些糊涂了,摘录网络中的文章如下: [http://www.360doc.com/content/10/0608/15/514342_ ...

  7. 解决vim中鼠标右键无法复制的问题

    转:http://www.cnblogs.com/jianyungsun/archive/2011/03/19/1988855.html 这是我的vim配置文件:jeffy-vim-v2.4.tar ...

  8. MVC5中Model层开发数据注解

    ASP.NET MVC5中Model层开发,使用的数据注解有三个作用: 数据映射(把Model层的类用EntityFramework映射成对应的表) 数据验证(在服务器端和客户端验证数据的有效性) 数 ...

  9. SQL中两种表复制语句

    Insert是T-sql中常用语句,Insert INTO table(field1,field2,...) values(value1,value2,...)这种形式的在应用程序开发中必不可少.但我 ...

随机推荐

  1. Not Found The requested URL / was not found on this server.

    http://www.wanysys.cc/coding/php/800.html 今天在做本地PHP项目的时候,想把之前wampserver的本地虚拟服务器环境访问方式改为本地localhost访问 ...

  2. appium问题整理

    在刚进入appium的世界时,遇到无数的坑,趟过无数的浑水,现在整理一些常用的报错讯息,供大家参考 1.org.openqa.selenium.remote.UnreachableBrowserExc ...

  3. Docker之容器

    容器(Container) 容器介绍: docker是通过容器来运行业务的,就像运行一个kvm虚拟机是一样的.容器其实就是从镜像创建的一个实例. 我们可以对容器进行增删改查,容器之间也是相互隔离的.和 ...

  4. 从jvm源码看synchronzied

    synchronized的使用 synchronized关键字是Java中解决并发问题的一种常用方法,也是最简单的一种方法,其作用有三个:(1)互斥性:确保线程互斥的访问同步代码(2)可见性:保证共享 ...

  5. VBA小技巧

    运用VBA时,可以构造一些函数去实现诸如printf的方便函数. Public Function printf(mask As String, ParamArray tokens()) As Stri ...

  6. 初识Python装饰器

    python中,一切皆对象.做为面向对象开发中非常重要的一个环节,函数有着无可替代的作用. 函数可以作为对象赋值给一个变量,可以作为元素添加到集合对象中,可以作为参数值传递给其它函数,还可以当做函数的 ...

  7. Angular2学习笔记四(之Http通信)

    前言: 在这里,我描述三个场景,即系统的注册与登录,及登录后的操作: 1.注册场景,前端页面传入用户名密码,通过一个api接口传到后台,在后台对这用户及密码进行保存: 2.登录场景,前端用户传入用户名 ...

  8. Jquery DataTable控制显示列,导出EXCEL

    1.初始化 var table = $('#table').DataTable({ "data": data[0].DATA, "columns": data[ ...

  9. flask入门与发送邮件与QQ邮箱

    前言: 快两个月没写博客了, 原因是懒了, 没有最初写博客那种看到阅读量上涨, 别人给自己文章点赞后的开心. 心态也发生了不少变化. 有机会再来写写. 前两个月我去厦门某公司实习, 本着去厦门玩一玩还 ...

  10. 在window上安装redis

    redis没有官方的windows版本,如果需要在windows安装可以下载由微软维护的redis(https://github.com/MicrosoftArchive/redis). 在这里我们采 ...