获得徽章 1
- 什么是SEO?
SEO 是 Search Engine Optimization(搜索引擎优化)的首字母缩写。通俗的说,就是搜索自然排名优化。自然排名是相对于竞价排名而言的,两者的区别很明显:
竞价排名是付费的,搜索同样的关键字,排名位于前列, 会打上广告字样标签(仅指百度)。
自然排名是免费的,搜索同样的关键字,一般排名比较靠后, 不会带有广告字样。
SEO的用途就是利用搜索引擎的排名规则提高网站在相关领域的自然搜索排名,获得一定的精准流量,对于企业的曝光,引流获客,意义重大。搜索引擎第一页只有10个展示位,而参与排名的网站数量很庞大。所以注定了绝大部分网页都冲不进第一页,所以我们对SEO优化的效果,不要抱有过高的期待。经过SEO优化之后的网站,经过一段时间后,排名能冲进搜索引擎前五页,就不错了。展开评论点赞 - IFrame 在传统的前端开发中是一种常见的技术,用于在页面中嵌入其他网页或应用程序。然而,在微前端架构中,IFrame 并不是一个理想的选择,主要是因为以下几个方面的限制:
隔离性和通信复杂性:IFrame 本身提供了一种隔离的环境,但这也带来了通信和数据交互的复杂性。由于每个子应用都在独立的 IFrames 中运行,它们之间的通信需要通过特定的机制,如消息传递,而这增加了开发和维护的复杂性。
性能和加载时间:每个 IFrames 都需要加载和渲染独立的 HTML、CSS 和 JavaScript。这意味着在加载微前端应用时,需要同时加载多个 IFrames,导致额外的网络请求和页面资源占用,可能会影响性能和加载时间。
样式和布局限制:IFrame 的内容在页面中是独立的,它们具有自己的 CSS 样式和布局上下文。这导致在微前端架构中难以实现全局样式的一致性,以及子应用之间的布局和交互的协调问题。
浏览器安全性限制:由于安全策略的限制,IFrame 之间的跨域通信可能受到限制,特别是在涉及跨域资源访问和共享数据时。这可能导致在微前端架构中需要处理复杂的安全性问题。
鉴于以上限制,微前端架构通常采用其他技术手段来实现子应用的拆分和集成,例如使用 Web Components、JavaScript 模块加载器等。这些技术能够提供更好的隔离性、通信机制和性能优化,使得微前端架构更具可行性和灵活性。展开评论点赞 - 减少重排和重绘
重排和重绘会导致页面重新渲染,从而降低性能。可以通过以下方式来减少重排和重绘的次数:
使用CSS3动画:CSS3动画可以使用GPU加速,从而减少重排和重绘的次数。
使用transform和opacity:使用transform和opacity可以避免重排和重绘,从而提高性能。
避免频繁的DOM操作:频繁的DOM操作会导致浏览器频繁的重排和重绘,从而降低性能。
避免table布局:table布局会导致浏览器频繁的重排和重绘,从而降低性能。
使用requestAnimationFrame:使用requestAnimationFrame可以将DOM操作延迟到下一次重排前执行,从而减少重排和重绘的次数。展开评论点赞 - 协商缓存
如果缓存过期了,我们就可以使用协商缓存来解决问题。协商缓存需要请求,如果缓存有效会返回 304。
协商缓存需要客户端和服务端共同实现,和强缓存一样,也有两种实现方式。
Last-Modified 和 If-Modified-Since
Last-Modified表示本地文件最后修改日期,If-Modified-Since会将Last-Modified的值发送给服务器,询问服务器在该日期后资源是否有更新,有更新的话就会将新的资源发送回来。
但是如果在本地打开缓存文件,就会造成Last-Modified被修改,所以在 HTTP / 1.1 出现了ETag。
ETag 和 If-None-Match
ETag类似于文件指纹,If-None-Match会将当前ETag发送给服务器,询问该资源ETag是否变动,有变动的话就将新的资源发送回来。并且ETag优先级比Last-Modified高。展开评论点赞 - 分类并非唯一,可以有不同角度,但都需遵从 MECE 原则(相互独立、完全穷尽) ,即做到不重不漏。
按页面加载链路分类:容器启动、资源加载、代码执行、数据获取、绘制渲染。
按资源性能分类:CPU、内存、本地 I/O、网络。该分类方法又被叫做 USE 方法(Utilization Saturation and Errors Method)。
按协作方分类:前端、客户端、数据后台、图片服务、浏览器引擎等。
按流程优化分类:前置、简化、拆分。
前置即调整流程,效果上可能是高优模块前置或并行,低优模块后置;
简化即缩减或取消流程,体积优化是简化,执行加速也是简化;
拆分即细粒度拆解流程,本身没有优化效果,是为了更好的进行前置和简化。
这个角度抽象层次较高,通常能回答出来的都是高手。
多级分类:使用多个层级的分类方法。比如先按页面加载链路分类,再将链路中的每一项用协作方或者流程优化等角度再次分类。突出的是一个系统性思维。
展开评论点赞 - 首先,这两个家伙没有任何的血缘关系,java是是由Sun 公司于1995年5月推出的;
javascript是于1995年由Netscape公司设计实现而成的,由于Netscape公司与Sun公司合作,Netscape高层希望它看上去能够像Java,因此取名为JavaScript。
1、Java是面向对象的语言,JavaScript是脚本语言,是基于对象和事件驱动的语言。
2、Java的源代码在执行之前必须经过编译,而JavaScript的代码不需要,可以由浏览器直接解释执行。
3、java主要在服务端运行;javascript主要运行在客户端浏览器中。
4、JavaScript是动态类型语言;而Java是静态类型语言。java在定义了一个数组的长度以后就不能再改变了,但是javascript却可以。
5、JavaScript是弱类型的,即在使用前不需要声明,而是浏览器解释器在运行时检查数据类型;Java属于强类型,即所有变量在编译前必须作声明;
6、JavaScript 的面向对象是基于原型的(prototype-based)实现的,Java 是基于类(class-based)的;
7、Java的语法规则比JavaScript要严格的多,功能要强大的多。展开评论点赞 - HTTP 2.0通过支持首部字段压缩和多路复用技术,让应用更有效地利用网络资源,减少感知的延迟时间。
二进制分帧机制是HTTP 2.0大幅度提高网页性能的核心,它定义了如何封装HTTP消息并在客户端与服务器之间传输。HTTP 1.x的版本都是通过文本的方式传递数据,而HTTP 2.0将传输的信息分割为更小的消息和帧,并对它们采用二进制格式的编码。
HTTP 2.0在二进制分帧的基础上实现了多路复用技术,可以在同一连接上同时发送多个请求和响应,解决了HTTP 1.x的队头阻塞问题,提高了并行处理能力和性能,突破了HTTP 1.x中每个连接每次只交付一个响应的限制。
HTTP 2.0使用HPACK算法对请求和响应头部进行压缩,减少了数据传输量, 可以显著减少每个请求的开销,提高了网络传输速度。而且,它还支持服务器到客户端的主动推动推送机制。展开评论点赞 - Promise有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。初始状态为pending,当异步操作完成时,可以变为fulfilled或rejected。
Promise具有链式调用的特性。通过then方法可以注册回调函数,在异步操作完成后执行这些回调函数。then方法返回一个新的Promise对象,使得多个异步操作可以按顺序执行。
Promise可以通过resolve方法将状态从pending变为fulfilled,并传递一个值作为成功的结果;也可以通过reject方法将状态从pending变为rejected,并传递一个原因作为失败的结果。
Promise可以通过catch方法捕获错误,并处理错误情况。
Promise还提供了一些静态方法,如resolve、reject、all和race等。其中,resolve方法返回一个已经成功的Promise对象;reject方法返回一个已经失败的Promise对象;all方法接收一个包含多个Promise对象的数组,并在所有Promise对象都成功时返回一个包含所有结果的新Promise对象;race方法接收一个包含多个Promise对象的数组,并在任意一个Promise对象成功或失败时返回相应结果。展开评论点赞