当前位置: 首页 > news >正文

南阳网站优化网页无法访问此页面怎么办?网页打不开怎么解决

南阳网站优化,网页无法访问此页面怎么办?网页打不开怎么解决,网站开发前调查,做led灯网站有哪些呢文章目录 代理模式实现保护代理虚拟代理单一职责原理代理和本体 - 接口一致性虚拟代理 - 合并请求缓存代理其他代理 代理模式 定义:为一个对象提供一个代用品 & 占位符,以便 控制对他的访问 关键:不方便直接访问某个对象或不满足需要的时…

文章目录

    • 代理模式
    • 实现
    • 保护代理
    • 虚拟代理
    • 单一职责原理
    • 代理和本体 - 接口一致性
    • 虚拟代理 - 合并请求
    • 缓存代理
    • 其他代理

代理模式

定义:为一个对象提供一个代用品 & 占位符,以便 控制对他的访问
关键:不方便直接访问某个对象或不满足需要的时候,提供一个对象来控制对那个对象的访问,我们则访问这个替身对象

实现

代理模式实现起来是相对容易的,让 xiaoming 送花给 anotherman

var Flower = function () {};var xiaoming = {// 送花给 targetsendFlower: function (target) {var flower = new Flower();target.receiveFlower(flower);},
};var anotherman = {// 代理人送花receiveFlower: function (flower) {MM.receiveFlower(flower);},
};var MM = {receiveFlower: function (flower) {console.log("收到花 " + flower);},
};xiaoming.sendFlower(anotherman);

此时的代理模式几乎毫无作用,中间人 / 代理人只是简单地转交给本体

但如果改变一下情景,如果中间人具有检测 MM 心情的能力,检测到 MM 心情好时再送花结果就不会不合时宜了!这使得一部分代码从 MM 和 xiaoming 身上得到了解耦,xiaoming 不会再被要求检测 MM 的心情,而 MM 也不被要求向 xiaoming 输出他的心情

保护代理

上面的代理模式可以演变成一个实用的例子,代理人 anotherman 可以帮助过滤一些请求,使得请求直接在 anotherman 处被拒绝掉,这就是 保护代理

虚拟代理

另外如果假设 flower 价值不菲,当你执行 new Flower() 时会消耗大量时间空间

那么我们把 new Flower() 的操作交给 anotherman 执行,这就叫做 虚拟代理,使得一些开销大的对象会在真正需要他时才创建

单一职责原理

当我们需要在页面加载图片,网速不够快的时候会需要在未加载好的位置放上一些文字或者其他内容,我们就可以用上代理模式

但这样的功能显然不需要代理模式也可以做到,我们可以引入单一职责原理帮助理解代理模式的好处在哪里

单一职责指的是:一个(通常也包括函数对象)应该仅有一个引起他变化的原因。如果这个类承担了多个职责,意味着这个对象将变得巨大,引起他变化的原因就有多个,导致脆弱和低内聚的设计

职责就是这个引起变化的原因,比如 MyImage 对象,除了要给 img 节点设置 src 来加载图片之外,还要负责预加载图片

但通过代理模式增加一个对象处理预加载,再获取 MyImage 对象,我们没有改变 MyImage 对象的行为同时,也增加了新的功能预加载,这也是开放-封闭原则的核心

代理和本体 - 接口一致性

如果某一天我们不需要预加载图像了,那么把代码直接从代理替换成本体,也是一样的:

  • 用户只需要放心请求,最终结果是相仿的
  • 任何本体和代理存在的地方都可以互相置换

在 Java 类似的语言中,代理和本体都显式实现了同一个接口,通过接口向上转型,避开了类型检查,所以都可以替换使用

在 JavaScript 中,有时通过鸭子类型来检测,有时则直接不检测,依赖程序员的自觉性,这还是在可控范围内的~

虚拟代理 - 合并请求

在 HTTP 中,有时我们会发送文件,如果一次有许多文件需要发送,频繁地请求必然会造成巨大的开销,我们就可以通过代理,收集一段时间的请求并一起打包给服务器

var sendFile = function () {console.log("send file");
};var proxySendFile = (function () {var cache = [];var timer;return function (id) {cache.push(id);if (timer) return;timer = setTimeout(function () {sendFile(cache.join(",")); // 2秒后向本体发送id集合clearTimeout(timer);timer = null;cache.length = 0; // 清空id集合});};
})();

缓存代理

缓存代理可以为一些开销大的运算提供临时的存储,如果下次请求参数一致,就直接返回

这样的例子在 ajax 异步请求 & 分页请求中是常见的!

var proxyMulti = (function () {var cache = {}; // 缓存return function () {var args = Array.prototype.join.call(arguments, ",");if (args in cache) {// 如果缓存中有这个参数return cache[args];}// 如果缓存中没有这个参数return (cache[args] = mult.apply(this, arguments));};
})();

其他代理

除此之外还有一些代理在 JavaScript 中不那么常见,但也很重要:

  • 防火墙代理:控制网络资源访问,避免坏人靠近
  • 远程代理:为一个对象在不同的地址空间提供局部代表
  • 保护代理:需要不同访问权限的情况
  • 智能引用代理:在访问对象时附加一些操作,比如计算对象被引用多少次
  • 写时复制代理:延迟了复制的过程,当对象被真正修改时才进行复制,DLL 是典型运用场景
http://www.yayakq.cn/news/373643/

相关文章:

  • 大学网站建设招标方案湖南建筑网
  • 计算机应用技术网站开发与应用建设银行网站不主动弹出
  • 购物网站模板站互动平台是什么意思
  • 网站通栏广告设计中国工程建筑门户网站官网
  • 网站被人做跳转改如何举报网站开发的概念
  • 做个网站多少钱一年wordpress禁止截图
  • 云存储能用来做网站吗企业网站规划与开发
  • 网站建设狼盾网络建设机械网站精英
  • 12建网站微信手机网站搭建
  • 用ps软件做ppt模板下载网站佛山网站优化平台
  • 网站设计的导航栏怎么做制作精美网站建设服务周到
  • 专业网站设计制作服务网站建设学习要多久
  • 专业微信网站建设多少钱石家庄防疫最新政策
  • 灵武住房和城乡建设厅网站提升自己网站
  • 外国建设小网站赚钱开发app需要什么样的团队
  • 湘潭网站建设优化建站辽宁网络优化方法
  • 家用电脑和宽带做网站菠萝蜜一区二免费进入
  • 一等一网站建设免费网络推广100种方法
  • 沧州建设网站的公司企业展示网站开发
  • 玩具公司网站建设方案网站建设流程图片
  • 营口网站制作公司无锡装修公司哪家口碑最好
  • 杭州品格网站设计优化网站排名推荐公司
  • 绵阳哪个网站做外卖做的好wordpress 页面满屏
  • 站酷网页金华网站建设luopan
  • wordpress登录地址无法登录百度seo优化技术
  • 莱州市网站跨境电商网店
  • 中国化工网网站建设建议成都什么是网站建设
  • 深圳前十网站建设公司编辑网站的软件
  • 北京微信网站制作企业解决方案ppt
  • 如何做网站的二级页面怎么建设自己的一个服务器网站