1.单页面应用和多页面应用有哪些区别和优缺点
-
单页面应用首屏渲染速度会慢,可以使用ssr或者是对页面进行性能优化或者通过配置webpack压缩等实现优化
-
单页面应用,跳转页面并不会向后端重新请求页面资源,只需要根据路由加载对应的资源,跳转速度快
-
但是由于单页面应用在跳转时不向后端重新发http请求,对应的title、description会少很多,seo效果差,不利于被网络爬虫
-
多页面应用需要后端配置每个页面html对应的资源,后端任务加重
-
多页面应用跳转时会重新发起http请求,全局的css不能够像单页面那样复用,加载速度慢
-
但是多页面应用首屏加载速度快,同时刷新不会404.如果通过history这种形式的路由配置的单页面,跳转时没问题,但是刷新了如果后端未配置会出现404
补充一道题,hash模式和history模式的区别
-
一般路由实现主要有history和hash两种方式
-
hash的实现全部在前端,不需要后端服务器配合,兼容性好,主要是通过监听hashchange事件,处理前端业务逻辑
-
history的实现,需要服务器做以下简单的配置,通过监听pushState及replaceState事件,处理前端业务逻
对于 history 来说,确实解决了不少 hash 存在的问题,但是也带来了新的问题。具体如下:
-
使用
history模式时,在对当前的页面进行刷新时,此时浏览器会重新发起请求。如果nginx没有匹配得到当前的url,就会出现404的页面。 -
而对于
hash模式来说, 它虽然看着是改变了url,但不会被包括在http请求中。所以,它算是被用来指导浏览器的动作,并不影响服务器端。因此,改变hash并没有真正地改变url,所以页面路径还是之前的路径,nginx也就不会拦截。 -
因此,在使用
history模式时,需要通过服务端来允许地址可访问,如果没有设置,就很容易导致出现404的局面。
之前顺丰面试官问我history模式切换路由会不会向后端发起请求,答案应该是不会的,只有在刷新的情况下才会进行新的http请求,如果后端没配置,则容易出现404
2.单页面应用中,url输入后,获取到一个index.html.怎么判断是访问A页面还是B页面?
没有查到答案 面试官说,请求到的index.html文件中会有对应的路由信息,通过url中的路由不断寻找,直至将页面加载出来
3.DNS劫持是什么,怎么预防
1.DNS劫持的方法
下面大概说几种DNS劫持方法
1.本机DNS劫持
攻击者通过某些手段使用户的计算机感染上木马病毒,或者恶意软件之后,恶意修改本地DNS配置,比如修改本地hosts文件,缓存等
2. 路由DNS劫持
很多用户默认路由器的默认密码,攻击者可以侵入到路由管理员账号中,修改路由器的默认配置
3.攻击DNS服务器
直接攻击DNS服务器,例如对DNS服务器进行DDOS攻击,可以是DNS服务器宕机,出现异常请求,还可以利用某些手段感染dns服务器的缓存,使给用户返回来的是恶意的ip地址
4.用 HTTP DNS 代替 Local DNS
2.DNS的防范
就这上面的劫持方法,说几种方法手段
1.加强本地计算机病毒检查,开启防火墙等,防止恶意软件,木马病毒感染计算机
2.改变路由器默认密码,防止攻击者修改路由器的DNS配置指向恶意的DNS服务器
3.企业的话可以准备两个以上的域名,一旦一个域名挂掉,还可以使用另一个
4.用HTTP DNS 代替 Local DNS
对于DNS劫持,往往单靠个人设置很难解决,如果已经出现了劫持现象的话,对电脑进去杀毒,清理,检查hosts文件,核查网络设置的DNS配置(可以使用写公共的DNS服务器)
最后,查了很多资料才写了这篇文章,补充自己这方面的知识点,后面考虑继续写关于web安全--ddos攻击,xss,csrf等