浅谈SPA、SEO、SSR

news/2024/5/10 18:29:21/文章来源:https://blog.csdn.net/weixin_45242865/article/details/120050852

前后端分离算是最近Web开发的大趋势了,目前已经有大量的公司使用了前后端分离的开发方式。那我们就来大概谈谈前后端分离开发中必须要了解和接触的几个概念:SPA、SEO和SSR。在谈这几个概念之前,先来聊聊我理解的前后端分离。

我理解的前后端分离

背景

  最开始接触 Web 前后端大概是一年多前,那个时候打算参加一个比赛,因为没人写后端和 Web 前端,所以就开始自己学,然后边学边做。另外当时我们的项目还有移动端,所以后端除了提供数据渲染Web前端的页面以外还得给移动端提供接口,实际上两端的数据大多都是相同的。
传统的Web前后端开发大多是前端将页面写好,之后丢给后端,让后端将页面集成到项目中去。这里就存在着一个前后端耦合的问题,首先对于后端来说,不仅要写后端逻辑,还得集成前端页面(要是页面哪里再有啥问题那就更悲催了,都是泪啊~~),而对于前端来说,不是很轻松地就能看到页面的真正渲染出来的样子,显示是不利于开发调试的,这里的效率自然也成了问题。
也正是由于前后端的高耦合,使得任何一方的变化都可能会影响到另一方。
针对类似于上述的一些问题,前后端分离的思想便应运而生。

基本概念:

  前后端根据 AJAX 接口进行数据的交互,目前常见的是后端直接将数据以 JSON 的格式返回给前端,前端根据后端服务器返回的数据,操作 DOM

主要优点

  • 分工明确,前后端各司其职,后端专注业务逻辑和功能的实现,前端专注页面设计
  • 接口明确,并行开发,在后端接口没有实现好之前,前端完全可以自己通过 Node.js 的 Express和koa 等的 Web 框架模拟接口,提供测试数据。
  • 提高开发效率,一定程度上减少了前后端的沟通成本 撕逼

在前后端分离中,后端一般提供 RESTful API,常将数据以 JSON 格式返回;而前端一般使用什么呢,这里便是引出了我们讨论的主题之一:SPA。

SPA

概述

  SPA 全称是 single page application (在 百度百科 和一些文章中使用的是 single page web application,经过一番查询了解,我觉得 single page application 才应该是它的全称)。
  SPA 是一种 网络应用程序(WebApp) 模型。在传统的网站中,不同的页面之间的切换都是直接从服务器加载一整个新的页面,而在 SPA 这个模型中,是通过动态地重写页面的部分与用户交互,而避免了过多的数据交换,响应速度自然相对更高。
举个栗子,请看 知乎 首页


  在知乎 Web 页面中,一些部分是几乎不会发生变化的,比如导航栏,当我们点了某一个问题进入之后,它的导航栏依然不会有什么变化。
在这里插入图片描述
  在传统的 Web 网站中,进入了新的页面,会从服务器请求完整的一个整个页面,而在 SPA 中,当切换到新的页面,只需要重写页面发生了变化的部分。

目前常见的几个SPA框架

  AngularJS
  React
  Vue.js

SPA的优点

基本上前面所说的前后端分离的优点它都有,另外还有以下的一些优点

  • 页面之间的切换非常快
  • 一定程度上减少了后端服务器的压力(不用管页面逻辑和渲染)
  • 后端程序只需要提供 API,完全不用管客户端到底是 Web 界面还是手机等

SPA的缺点

  • 首屏打开速度很慢,因为用户首次加载需要先下载 SPA 框架及应用程序的代码,然后再渲染页面
  • 不利于 SEO

根据这几个缺点,我们便又引出了接下来讨论的两个主题,SEO 和 SSR,先谈谈 SEO。

SEO

概述

  搜索引擎优化,又称为 SEO,即 Search Engine Optimization,它是一种通过分析搜索引擎的排名规律,了解各种搜索引擎怎样进行搜索、怎样抓取互联网页面、怎样确定特定关键词的搜索结果排名的技术。搜索引擎采用易于被搜索引用的手段,对网站进行有针对性的优化,提高网站在搜索引擎中的自然排名,吸引更多的用户访问网站,提高网站的访问量,提高网站的销售能力和宣传能力,从而提升网站的品牌效应。

常用技术

搜索引擎优化中的技术大致可以分两类:白帽技术黑帽技术
SEO 涉及细节也很多,以下是 维基百科 对于一些白帽技术的介绍:

  • 在每页使用一个短、独特和相关的标题。
  • 编辑网页,用与该页的主题。有关的具体术语替换隐晦的字眼。这有助于该站诉求的观众群,在搜索引擎上搜索而被正确导引至该站。
  • 在该站点增加相当数量的原创内容。
  • 使用合理大小、准确描述的汇标,而不过度使用关键字、惊叹号、或不相关标题术语。
  • 注意网址字眼,有助于搜索引擎优化。
  • 确认所有页可透过正常的链接来访问,而非只能透过Java 、JavaScript或Adobe Flash应用程序访问。这可透过使用一个专属列出该站所有内容的网页达成(网站地图)
  • 透过自然方式开发链接:Google不花功夫在这有点混淆不清的指南上。写封电子邮件给网站员,告诉他:您刚刚贴了一篇挺好的文章,并且请求链接,这种做法很可能为搜索引擎所认可。
  • 参与其他网站的网络集团(译按:web ring 指的是有相同主题的结盟站群)──只要其它网站是独立的、分享同样题目和可比较的品质。

除去非开发细节,我们大该可以提炼出以下的信息:

  • 标题: 即 HTML 的 <title></title> 标签,例如: <title>浅谈SPA、SEO、SSR | XXX 的博客</title> ,在 Google 的 相关文档 中已经说明了不再使用 <title> 标签作为Meta,但是经常会配合 description 出现在搜索的结果上
While technically not a meta tag, this tag is often used together with the "description". 
The contents of this tag are generally shown as the title in search results (and of course 
in the user's browser)
  • 描述: 即 HTML <meta> 标签的 description,例如百度百科的一个词条的 description
<meta name="description" content="通常所说的META标签,是在HTML网页源代码中一个重要的html标签。
META标签用来描述一个HTML网页文档的属性,例如作者、日期和时间、网页描述、关键词、页面刷新等。...">
  • 关键字: 即 HTML <meta> 标签的 keywords, 例如
<meta name="keywords" content="META标签 META标签作用 META标签组成 META标签属性 META标签描述设计 
META标签错误 META标签标签">

Google 的相关文档中也没有提到过使用 meta keywords, Quora 也讨论过 Google 是否还在使用 meta keywords 这个问题,大部分的回答都是谷歌已经不再使用它了,但是其它的一些搜索引擎比如百度等还在使用 meta keywords

SPA 与 SEO 的冲突

  前面我们谈到的 SPA 不利于 SEO,因为就目前而言,部分搜索引擎如 Google、bing 等,它们的爬虫虽然已经支持执行 JS 甚至是通过 AJAX 获取数据了,但是对于异步数据的支持也还不足(也可能是搜索引擎提供商觉得没必要),Vue SSR 中是这样说的

如果你的应用程序初始展示 loading 菊花图,然后通过 Ajax 获取内容,抓取工具并不会等待异步完成后
再行抓取页面内容。

  前面也谈到过 SPA 应用中,通常通过 AJAX 获取数据,而这里就难以保证我们的页面能被搜索引擎正常收录到。并且有一些搜索引擎不支持执行 JS 和通过 AJAX 获取数据,那就更不用提 SEO 了。
对于有些网站而言,SEO 显得至关重要,例如主要以内容输出为主的 Quora、stackoverflow、知乎 和
豆瓣 等等,那如何才能正常使用 SPA 而又不影响 SEO 呢?鲁迅曰:

技术上的问题总有技术去解决

  此时,SSR 便闪亮登场了

SSR

概述

  SSRServer-Side Rendering(服务器端渲染)的缩写,在普通的 SPA 中,一般是将框架及网站页面代码发送到浏览器,然后在浏览器中生成和操作 DOM(这里也是第一次访问 SPA 网站在同等带宽及网络延迟下比传统的在后端生成 HTML 发送到浏览器要更慢的主要原因),但其实也可以将 SPA 应用打包到服务器上,在服务器上渲染出 HTML,发送到浏览器,这样的 HTML 页面还不具备交互能力,所以还需要与 SPA 框架配合,在浏览器上“混合”成可交互的应用程序。所以,只要能合理地运用 SSR 技术,不仅能一定程度上解决首屏慢的问题,还能获得更好的 SEO

SSR的优点

  • 更快的响应时间,不用等待所有的 JS 都下载完成,浏览器便能显示比较完整的页面了。这个个人深有体会,我的博客最开始仅仅使用了 Vue.js,而没有做服务端渲染,加之服务器不在大陆,第一次输入地址到看到完整的页面几乎是过了 4、5 秒,有时候还更长。
  • 更好地 SEO,我们可以将 SEO 的关键信息直接在后台就渲染成 HTML,而保证搜索引擎的爬虫都能爬取到关键数据。

SSR的缺点

  • 相对于仅仅需要提供静态文件的服务器,SSR 中使用的渲染程序自然会占用更多的CPU和内存资源
  • 一些常用的浏览器 API 可能无法正常使用,比如 windowdocmentalert 等,如果使用的话需要对运行的环境加以判断
  • 开发调试会有一些麻烦,因为涉及了浏览器及服务器,对于 SPA 的一些组件的生命周期的管理会变得复杂
  • 可能会由于某些因素导致服务器端渲染的结果与浏览器端的结果不一致。

SSR常用框架

  • React 的 Next
  • Vue.js 的 Nuxt

不熟悉 ReactNext,不作评价,我的博客便是使用了 Nuxt 做服务器端渲染,在此不得不说 Nuxt 的用法实在是太漂亮了,既有一定的约束(无规矩不成方圆),又不失扩展性,官网的文档也非常不错。

总结

  前后端分离降低了前端和后端的耦合度,提高了开发效率;
  SPA 是前后端分离中前端的一种解决方案;
  SEO 对与很多网站很重要而普通的 SPA 又不利于 SEO;
  SSR 的出现一定程度上解决了 SPA 中首屏慢的问题,又极大减少了普通 SPA 对于 SEO 的不利影响。

参考资料

Search engine optimization - Wikipedia
搜索引擎优化 - 维基百科,自由的百科全书
How Single-Page Applications Work – Paul Sherman – Medium
Meta tags that Google understands - Search Console Help
Does Google use meta keywords in 2018?-Quora
Vue SSR 指南 | Vue.js 服务器端渲染指南


转载自 简书 staneyffer 的文章 浅谈SPA、SEO、SSR
注:对于文章中的多处内容有微小改动

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_717879.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QQ空间Python爬虫(1)---网站分析

闲来无事准备写一个爬虫来爬取自己QQ空间的所有说说和图片-。- 首先准备工作&#xff0c;进入手机版QQ空间&#xff0c;分析页面&#xff1a; 我们发现&#xff0c;手机版空间翻页模式是采用瀑布流翻页&#xff08;查看更多&#xff09;&#xff0c;而非传统翻页模式&#xff0…

01-19asp.net网站--关于“应用程序中的服务器错误(需添加JqueryScriptRescourseMapping)”...

一般打开网页进行加载时&#xff08;有缓存&#xff09;&#xff0c;会弹出以下对话框。 但是如果网页加载后出现以下错误&#xff0c;就是应用程序的问题了。如果出现这种问题&#xff0c;就需要在安装Csharp的根目录下&#xff0c;找到一个名为.dll结尾的Jquery程序集&#x…

记一个爬虫加密网站算法的解密

为什么80%的码农都做不了架构师&#xff1f;>>> 网站就不发了具体过程呢&#xff1a; 通过阅读晦涩无比的代码发现它使用的是AESgzip压缩实现的加密 首先加密数据是17WSPeYwQFufy74vaYJ4base64的超长字符串 首先用base64解码 我们把加密的base64复制到本地txt 然后…

推荐计算机图形学习网站

计算机图形学是研究用计算机表示、生成、处理和显示图形的学科。它涉及将几何模型和数据转变为图形的各种算法和技术。目前&#xff0c;计算机图形学已经成为计算机科 学与技术中最为活跃的学科分支之一&#xff0c;并在众多领域&#xff08;如&#xff1a;汽车和飞机的设计与制…

Jenkins与网站代码上线

第1章 引入1.1 开发写代码的演变l 一个开发单打独斗&#xff0c;撸代码&#xff0c;开发网站&#xff0c;自由自在&#xff1b;l 多个开发同时开发一个网站&#xff0c;同时改一份代码。但是同时改一个文件会导致冲突。l 采用分支结构&#xff0c;每天上班第一件事克隆代码&…

nginx网站服务(上)

第1章 web网站服务介绍1.1 常用来提供静态Web服务的软件u Apache&#xff1a;这是中小型Web服务的主流&#xff0c;Web服务器中的老大哥。u Nginx&#xff1a;大型网站Web服务的主流&#xff0c;曾经Web服务器中的初生牛犊&#xff0c;现已长大。Nginx的分支Tengine&#xff08…

程序员一般喜欢浏览哪些网站呢?

2019独角兽企业重金招聘Python工程师标准>>> 作为一名非标准程序员我先来说说我的&#xff1a; 技术类 ①云栖社区 ②掘金 ③芋道源码 ④如梦技术 ⑤纯洁的微笑 ⑥码云github ⑦CSDN博客园 运营类 ①虎嗅网 ②36氪 ③雷锋网 科普类 ①果壳网 贴吧看的甚少&#xff0…

一些开源的论坛网站

2019独角兽企业重金招聘Python工程师标准>>> symphony,这个我觉得还挺好的&#xff0c;就是采用了一些自己封装的技术&#xff0c;不如spring 来的开放。 D / symphonyhttps://sym.b3log.org/ hsweb 企业后台管理基础框架 我对其中的一个框架还挺感兴趣的hs-web/hsw…

31.网站数据监控-2(scrapy文件下载)

31.网站数据监控-2&#xff08;scrapy文件下载&#xff09; 温州数据采集这里采集网站数据是下载pdf&#xff1a;http://wzszjw.wenzhou.gov.cn/col/col1357901/index.html&#xff08;涉及的问题就是scrapy 文件的下载设置&#xff0c;之前没用scrapy下载文件&#xff0c;所以…

小型网站项目完整部署流程(Windows操作系统)

前言 笔者近期接手一个第三方公司提供的基于Java web技术栈开发的后台前台项目。由于第一次做这么系统的开发&#xff0c;想着将项目开发的具体模块记录下来。从环境搭建到开发再到项目打包部署进行全开发链记录。本系列包含三篇博客&#xff0c;分别为环境搭建、项目开发、项…

小型网站开发环境搭建流程(Maven管理,Java技术栈)

前言 笔者近期接手一个第三方公司提供的基于Java web技术栈开发的后台前台项目。由于第一次做这么系统的开发&#xff0c;想着将项目开发的具体模块记录下来。从环境搭建到开发再到项目打包部署进行全开发链记录。本系列包含三篇博客&#xff0c;分别为环境搭建、项目开发、项…

小型网站项目完整部署流程(Linux操作系统——CentOS7.5)

前言 网络服务器以Linux操作系统的居多&#xff0c;因其天然的底层框架优势。笔者因为项目需求要在Linux操作系统服务上部署Java web项目&#xff0c;手头上没有该操作系统的服务器&#xff0c;因此使用虚拟机技术虚拟出一台CentOS7.5的虚拟服务器&#xff0c;并以此为基础进行…

如何编程登录有验证码的网站

看到论坛有人在问如何编程登录有验证码的网站题&#xff0c;于是专门研究了一下。文章后有源码下载地址。 注&#xff1a;验证码还是要人来辨认。 有几种处理办法&#xff0c;一是使用WebBrowser控件&#xff0c;一是使用WebClient或者WebRequest控件来处理。 本文中使用 Web…

网站漏洞渗透检测过程与修复方案

2019独角兽企业重金招聘Python工程师标准>>> 什么是网站渗透测试&#xff1f; 该如何做网站安全检测 网站的渗透测试简单来 说就是模拟攻击者的手法以及攻击手段去测试网站的漏洞&#xff0c;对网站进行渗透攻击测试&#xff0c;对网站的代码漏洞进行挖掘&#xff0…

m_Orchestrate learning system---网站的语言选择功能(中文英文)

m_Orchestrate learning system---网站的语言选择功能&#xff08;中文英文&#xff09; 一、总结 一句话总结&#xff1a;有两种方法&#xff0c;一是sessionjs端代码&#xff0c;而是sessionphp端代码。 推荐使用sessionphp端代码 用函数最方便&#xff0c;最简便&#xff0c…

如何用色彩制造出具有专业感的网站

如何用色彩制造出具有专业感的网站来源&#xff1a;yeeyan 作者&#xff1a;译&#xff1a;Srandy 发布时间&#xff1a; 2010-03-19 15:34:50是什么使得某个设计看起来协调、井然有序并且具有专业感&#xff1f;答案是&#xff1a;“色彩”。并不是所有的项目都需要用保守的黑…

如何让你的网站地址在发送到QQ朋友的时候显示绿色安全图标呢?...

今天教大家如何申请网址过QQ绿色安全打勾认证!网址获得了QQ安全认证过后就是把网址发给QQ好友或者QQ群的时候,我们的网址前面会有一个绿色的打勾标志! 首先介绍一下加V标示和不加V标示的区别&#xff1a; 加V绿标域名展示&#xff1a;官方认证&#xff0c;可放心访问。这种绿标…

安装好IIS后发布网站

首先&#xff0c;进行网站发布是需要IIS支持的&#xff0c;此处默认已经安装好IIS&#xff0c;并进行了Asp.net注册过程&#xff08;此步骤必需 &#xff0c;因为我是先安装的 .net 环境 &#xff0c;再安装的IIS&#xff09;。 其次&#xff0c;以下步骤可以方便指导新手如何…