首页 > 其他分享 >前端

前端

时间:2024-01-28 11:23:12浏览次数:19  
标签:请求 CDN 观察者 模式 服务器 前端 name

1、    性能优化

(1) 减少http请求次数:CSS Sprites, JS、CSS源码压缩、图片大小控制合适;网页Gzip,CDN托管,data缓存 ,图片服务器。

(2) 前端模板 JS+数据,减少由于HTML标签导致的带宽浪费,前端用变量保存AJAX请求结果,每次操作本地变量,不用请求,减少请求次数

(3) 用innerHTML代替DOM操作,减少DOM操作次数,优化javascript性能。

(4) 当需要设置的样式很多时设置className而不是直接操作style。

(5) 少用全局变量、缓存DOM节点查找的结果。减少IO读取操作。

(6) 避免使用CSS Expression(css表达式)又称Dynamic properties(动态属性)。

(7) 图片预加载,将样式表放在顶部,将脚本放在底部 加上时间戳。

 

2、    跨域

什么是同源策略?

同源策略/SOP(Same origin policy)是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击。所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。

同源策略限制以下几种行为:

1) Cookie、LocalStorage 和 IndexDB 无法读取

2) DOM 和 Js对象无法获得

3) AJAX 请求不能发送

跨域解决方案

1、   通过jsonp跨域

ü  原生实现:传参一个回调函数名给后端,后端返回时执行这个回调函数

ü  jquery ajax:dataType: 'jsonp'

ü  vue.js:_this.$http.jsonp()

2、   跨域资源共享(CORS)

普通跨域请求:只服务端设置Access-Control-Allow-Origin即可,前端无须设置,若要带cookie请求:前后端都需要设置。主流解决方案。

3、   WebSocket协议跨域

4、   nginx代理跨域

 

3、    Nginx

Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。

代理:

正向代理

       代理的是客户端,代客户端发出请求。

       特点是客户端非常明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息。

反向代理:

       它代理的是服务端,代服务端接收请求

       服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息。客户端是无感知代理的存在的,反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。因为客户端不需要任何配置就可以访问。

负载均衡

Nginx反向代理服务器接收到的请求数量,就是我们说的负载量。

请求数量按照一定的规则进行分发到不同的服务器处理的规则,就是一种均衡规则。

将服务器接收到的请求量按照规则分发的过程,称为负载均衡。

 

4、    CDN

       Content Delivery Network即内容分发网络。

       CDN是一组分布在多个不同的地理位置的WEB服务器,用于更加有效的向用户发布内容,在优化性能时,会根据距离的远近来选择 。

       CDN加速意思就是在用户和我们的服务器之间加一个缓存机制,通过这个缓存机制动态获取IP地址根据地理位置,让用户到最近的服务器访问,解决网络拥堵,提高访问速度,解决由于网络带宽小,用户访问量大,网点分布不均等原因导致的访问速度慢的问题。

       CDN能够缓存JavaScript脚本,css样式表,图片,图标,Flash等静态资源文件(不包括html页面),这些静态资源文件的访问频率很高,将其缓存在CDN可以极大地提高网站的访问速度,但由于CDN是部署在网络运营商的机房,所以在一般的网站很少用CDN加速。

       CDN的优势很明显:(1)CDN节点解决了跨运营商和跨地域访问的问题,访问延时大大降低;(2)大部分请求在CDN边缘节点完成,CDN起到了分流作用,减轻了源站的负载。

 

5、    观察者模式

概念:

       观察者模式,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。

       注意:有些人认为观察者模式就是发布订阅模式,但实际上观察者模式和发布订阅模式是有区别的。

       区别:观察者模式只有两个,一个是观察者一个是被观察者。发布订阅模式不一样,发布订阅模式还有一个中间层,发布订阅模式的实现是,发布者通知给中间层 => 中层接受并通知订阅者 => 订阅者收到通知并发生变化

复制代码
// 创建对象
var targetObj = {
    name:'小花'
}
var targetObj2 = {
    name:'小李'
}
// 定义值改变时的处理函数(观察者)
function observer(oldVal, newVal) {
    // 其他处理逻辑...
    targetObj2.name = newVal
    console.info('targetObj2的name属性的值改变为 ' + newVal);
}
// 定义name属性及其set和get方法(name属性为被观察者)
Object.defineProperty(targetObj, 'name', {
    enumerable: true,
    configurable: true,
    get: function() {
        return name;
    },
   set: function(val) {
        //调用处理函数
        observer(name, val)
        name = val
    }
});
targetObj.name = '张三';
targetObj.name = '李四';
console.log(targetObj2.name)
复制代码

虽然我们只是改变了targetObj的name属性,但是因为观察者模式的设计,targetObj2的name属性同样被改变,这就实现了一个简单的观察者模式。

 

6、    垃圾回收机制

       定义:指一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束。而 JavaScript 在创建对象(对象、字符串等)时会为它们分配内存,不再使用对时会“自动”释放内存,这个过程称为垃圾收集。

四种常见的内存泄漏:全局变量,未清除的定时器,闭包,以及 dom 的引用

全局变量不用var 声明的变量,相当于挂载到 window 对象上。如:b=1; 解决:使用严格模式被遗忘的定时器和回调函数、闭包、没有清理的 DOM 元素引用

标签:请求,CDN,观察者,模式,服务器,前端,name
From: https://www.cnblogs.com/luluping/p/17992591

相关文章

  • 如何通过观测云的RUM找到前端加载的瓶颈--可观测性入门篇
    声明与保证本文写作于2023年6月,性能优化的评价标准和优化方式仅适用于当前观测云控制台,当然随着产品迭代及技术更新,本文也会应要求适当更新。创建、修订时间创建修改人版本2023/6/24观测云***v1.0.01.网站性能评价的发展史(近20年)讲到网站性能优化,离不开网站技术发展史,更离不开网站......
  • 期权一张纸-不争连纸都没有-立足当下-观测未来-33岁前端程序员年终总结
    文章基本按照时间顺序,约5千字,内容讲的是:一场意外被辞,一场说走就走的旅游,一份5年亲密陪伴,下水捞过鱼,吃了“金蝉子”,野外路过营,举办了几次技术直播,我会简单陈述一下2022,希望明年总结能有一些精彩。因为是参赛文章,所以希望您能点赞、评论、转发或者评论666离职背景程序员被忽悠,期权大......
  • 我们前端同学最该关注什么-附评分思路
    来点实际的吧说一下我的想法(吐槽),我们是否对过程太过痴迷,忘记了我们要什么?文末给出我认为的好的标准比如:大家仿佛都在看框架、工具包和开发过程中的内容,这点可能是因为工期紧张,留给前端开发的时间不够,但996已经常态化的情况下,我们是不是该审查一下我们的结果:页面是否秒开?页面报错多......
  • 前端奇怪bug日记02
    出现问题: 鼠标点哪里哪里就出现光标,找了一个多小时,发现并不是代码问题:    解决方案:按一下键盘F7即可解决。......
  • 一对一源码,前端页面权限和按钮权限控制
    一对一源码,前端页面权限和按钮权限控制页面权限是一对一源码后台系统中非常常见的需求,在前端实现页面权限和按钮权限是为了确保用户只能访问其有权访问的页面,并执行其有权执行的操作。本文介绍前端实现页面权限和按钮权限控制的流程和逻辑。1.获取用户当前权限并且存在全......
  • 完美解决 - 前端发版后浏览器缓存问题
    一、简介开发完发布新版本后,在有些电脑上总需要强刷才能获取到最新版本的内容,太恶心了。浏览器缓存(BrowserCaching)是为了节约网络的资源加速浏览,浏览器在用户磁盘上对最近请求过的文档进行存储,当访问者再次请求这个页面时,浏览器就可以从本地磁盘显示文档,这样就可以加速页面......
  • 转 | 我是一名前端,部门想让我转webgl方向,要不要考虑一下?
    https://www.zhihu.com/question/640467378/answers/updated 作者:Medy丶ghost链接:https://www.zhihu.com/question/640467378/answer/3372989459来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。说一个大部分前端无法接受的事实。90%的前端搞不......
  • 鸿蒙开发会是前端程序员的下一个春天吗?
    前言最近前端的大环境不太行,之前身处在前端的自己薪资也越来越无望了,隐隐约约感觉前端做不下去了,2024前端找不到工作要转行吗?看新闻的过程中,发现越来越多的巨头公司融入鸿蒙生态建设,鸿蒙“朋友圈”正在不断壮大。各大互联网厂商已经完成或开始启动开发鸿蒙原生App,随着头部App厂......
  • 大文件分片上传demo,前端基于Uppy,
    实现分片上传并且支持断点续传需要基于TusTus是一种开放协议,用于基于HTTP构建的可恢复上传。这意味着意外关闭选项卡或失去连接,让您继续,对于实例,您的10GB上传,而不是重新开始。后端后端变化挺大的,你需要将你的服务器变得支持Tus,刚好官方提供了对应的插件(Java后台、php后......
  • Web前端性能优化
    性能优化是前端开发无法避免的点,给客户带去良好的访问体验也是开发人员必须关注的问题。前端性能优化大体分为两个部分:代码优化、资源及其他优化,本文主要记录资源及其他优化要怎么做。1、CSS样式文件在页面头部引入,Javascript文件在页面尾部引入页面加载单线程可能会阻塞页面的......