页面静态化 页面静态化

页面静态化

静态化概念:将页面内需要用到的数据从数据库中查询出来,然后生成一个静态的HTML页面,比如首页。用户来访问时直接返回静态页面即可。

静态化原因:

  1. 随着网站的内容的增多和用户访问量的增多,无可避免的是网站加载会越来越慢,受限于带宽和服务器同一时间的请求次数的限制,此时往往需要对网站进行代码优化和服务器配置的优化。

  2. 加快页面打开浏览速度,静态页面无需连接数据库打开速度较动态页面有明显提高;
  3. 有利于搜索引擎优化SEO,Baidu、Google都会优先收录静态页面,不仅被收录的快还收录的全;

  4. 减轻服务器负担,浏览网页无需调用系统数据库;

  5. 网站更安全,HTML页面不会受程序相关漏洞的影响;观看一下大一点的网站基本全是静态页面,而且可以减少攻击,防sql注入。

静态页面实现:

  • 提前准备一个模板文件,在模板文件中把所有用到的数据以及数据展示代码都提前写好(模板语言)
  • 定义一个函数,通过执行这个函数来生成静态页面。
    • 从数据库中查询出所需数据。
    • 使用对应模板文件,给模板文件传递数据进行模板渲染(将模板中的变量替换,得到替换之后的页面内容)
    • 将替换后的页面内容保存为一个静态文件。

静态页面更新 :

  • 定时任务:对于数据更新比较频繁的页面,可以使用操作系统的定时任务,让操作系统每隔一段时间自动调用生成静态页面的函数,来重新生成静态页面,以此来保持页面数据和数据库数据同步。
  • 修改时更新:对于数据更新不频繁的页面,更新页面的策略为,如果Admin站点通过后台管理界面修改了对应数据,就会重新生成对应的静态页面。

  首页数据更新比较频繁,采用定时任务进行首页静态页面的更新;对于详情页面,只有当管理员通过admin界面修改了数据才会更新对应商品的详情页面。

动态网站进行静态处理:页面静态化是指将动态页面变成html/htm静态页面。动态页面一般由JavaScript,Vue,jQuery,Python等程序语言编写而成,非常便于管理。但是访问网页时还需要程序先处理一遍,所以导致访问速度相对较慢。而静态页面访问速度快,却又不便于管理。那么动态页面静态化即可以将两种页面的好处集中到一起。

静态处理带给网站的好处:

(1)减轻服务器负担,浏览网页无需调用系统数据库。

(2)有利于搜索引擎优化SEO,Baidu、Google都会优先收录静态页面,不仅被收录的快还收录的全;

(3)提高了页面的访问速度,静态页面无需连接、访问数据库,浏览器直接加载渲染html页即可;

(4)网站更安全,HTML页面不会受程序相关漏洞的影响;大型网站基本全是静态页面。

(5)数据库出错时,不影响网站的正常访问。

(6)静态网页不宜遭到黑客攻击,如果黑客不知道你网站的后台、网站采用程序、数据库的地址,静态网页, 更不容易受到黑客的攻击。而且可以减少攻击,防sql注入

(7)提升用户体验,不会因为程序、数据库等出现问题,而直接影响网站的访问,能够提升用户对网站的信任度。

页面静态化原理:全静态化 & 伪静态化 

  • 动态生成一个页面的开销往往很大,例如需要多次查询数据库或者外部服务。为了减少服务器端的开销和加快网站的运行效率,服务器端会将一个页面的整体内容保存为一个HTML文件,这样每次在服务器端获取客户端请求的时候,只要读取相应的文件即可,而不需要重新查询数据库或外部服务并重新生成页面内容。缺点是数据更新之后无法及时的显示在浏览者面前。可以利用Django、Flask模板实现页面静态化。
  • 伪静态是指通过路由的方法把Python的后缀转换成HTML,即URL重写。例如,我们需要从客户端获取一个“页码”,然后在页面上呈现出这一页的内容。从客户端传递信息的方式有多种,其中最常见的便是通过Query String进行传递。栗子,我们可以通过 goods?id=3 这样的方式来请求id为3的商品。但是如果纯粹使用Query String来传递信息的话,一个URL可能会带有许多项查询字符串。例如 goods?page=3&keywords=helloworld&category=6&....这样的URL由于明显是动态的,因此搜索引擎对它的处理可能会有所负面倾斜,例如将其权值放低。因此,很多程序都会把为URL规范为特别的形式,例如 goods/3,甚至是 goods_3.html。使用htm或html作为URL的结尾,是为了“欺骗”搜索引擎,让搜索引擎以为这是一个直接从存储设备上直接读取的资源不会改变,因此“它的权值可能会相对提高”。这样更有利于网站优化以及页面的抓取,但实际还是需要走服务器从数据库获取数据。优点是数据更新时,可以立即显示在浏览者面前。
 
如何选择:
  • 网站实时性要求比较高,不要使用页面静态化(真静态、伪静态均不适宜)
  • 如果网站访问量较小,没有必要使用静态化技术
  • 如果数据项目不多,但是访问频率极大,建议使用真静态,如新浪新闻频道
  • 如果数据醒目海量使用真静态会生成海量的html静态页面,建议使用伪静态

静态化和缓存的主要区别

  •  页面静态化是将数据库静态化到页面,客户端访问不需要查询数据库,主要存放形式是静态化文件资源,存储于硬盘;
  •  缓存是将数据存储于服务器内存,二者存放位置和形式不一样。

这二者使用主要看业务场景及网站优化的点,比如说秒杀的时候,肯会都要把页面进行静态化放到CDN上面,这样在前端就能抗住大量的并发请求;但是在广告页面的广告数据我们就可以使用页面缓存来实现,同样不用对数据库进行查询,只要访问内存就行。

静态化概念:将页面内需要用到的数据从数据库中查询出来,然后生成一个静态的HTML页面,比如首页。用户来访问时直接返回静态页面即可。

静态化原因:

  1. 随着网站的内容的增多和用户访问量的增多,无可避免的是网站加载会越来越慢,受限于带宽和服务器同一时间的请求次数的限制,此时往往需要对网站进行代码优化和服务器配置的优化。

  2. 加快页面打开浏览速度,静态页面无需连接数据库打开速度较动态页面有明显提高;
  3. 有利于搜索引擎优化SEO,Baidu、Google都会优先收录静态页面,不仅被收录的快还收录的全;

  4. 减轻服务器负担,浏览网页无需调用系统数据库;

  5. 网站更安全,HTML页面不会受程序相关漏洞的影响;观看一下大一点的网站基本全是静态页面,而且可以减少攻击,防sql注入。

静态页面实现:

  • 提前准备一个模板文件,在模板文件中把所有用到的数据以及数据展示代码都提前写好(模板语言)
  • 定义一个函数,通过执行这个函数来生成静态页面。
    • 从数据库中查询出所需数据。
    • 使用对应模板文件,给模板文件传递数据进行模板渲染(将模板中的变量替换,得到替换之后的页面内容)
    • 将替换后的页面内容保存为一个静态文件。

静态页面更新 :

  • 定时任务:对于数据更新比较频繁的页面,可以使用操作系统的定时任务,让操作系统每隔一段时间自动调用生成静态页面的函数,来重新生成静态页面,以此来保持页面数据和数据库数据同步。
  • 修改时更新:对于数据更新不频繁的页面,更新页面的策略为,如果Admin站点通过后台管理界面修改了对应数据,就会重新生成对应的静态页面。

  首页数据更新比较频繁,采用定时任务进行首页静态页面的更新;对于详情页面,只有当管理员通过admin界面修改了数据才会更新对应商品的详情页面。

动态网站进行静态处理:页面静态化是指将动态页面变成html/htm静态页面。动态页面一般由JavaScript,Vue,jQuery,Python等程序语言编写而成,非常便于管理。但是访问网页时还需要程序先处理一遍,所以导致访问速度相对较慢。而静态页面访问速度快,却又不便于管理。那么动态页面静态化即可以将两种页面的好处集中到一起。

静态处理带给网站的好处:

(1)减轻服务器负担,浏览网页无需调用系统数据库。

(2)有利于搜索引擎优化SEO,Baidu、Google都会优先收录静态页面,不仅被收录的快还收录的全;

(3)提高了页面的访问速度,静态页面无需连接、访问数据库,浏览器直接加载渲染html页即可;

(4)网站更安全,HTML页面不会受程序相关漏洞的影响;大型网站基本全是静态页面。

(5)数据库出错时,不影响网站的正常访问。

(6)静态网页不宜遭到黑客攻击,如果黑客不知道你网站的后台、网站采用程序、数据库的地址,静态网页, 更不容易受到黑客的攻击。而且可以减少攻击,防sql注入

(7)提升用户体验,不会因为程序、数据库等出现问题,而直接影响网站的访问,能够提升用户对网站的信任度。

页面静态化原理:全静态化 & 伪静态化 

  • 动态生成一个页面的开销往往很大,例如需要多次查询数据库或者外部服务。为了减少服务器端的开销和加快网站的运行效率,服务器端会将一个页面的整体内容保存为一个HTML文件,这样每次在服务器端获取客户端请求的时候,只要读取相应的文件即可,而不需要重新查询数据库或外部服务并重新生成页面内容。缺点是数据更新之后无法及时的显示在浏览者面前。可以利用Django、Flask模板实现页面静态化。
  • 伪静态是指通过路由的方法把Python的后缀转换成HTML,即URL重写。例如,我们需要从客户端获取一个“页码”,然后在页面上呈现出这一页的内容。从客户端传递信息的方式有多种,其中最常见的便是通过Query String进行传递。栗子,我们可以通过 goods?id=3 这样的方式来请求id为3的商品。但是如果纯粹使用Query String来传递信息的话,一个URL可能会带有许多项查询字符串。例如 goods?page=3&keywords=helloworld&category=6&....这样的URL由于明显是动态的,因此搜索引擎对它的处理可能会有所负面倾斜,例如将其权值放低。因此,很多程序都会把为URL规范为特别的形式,例如 goods/3,甚至是 goods_3.html。使用htm或html作为URL的结尾,是为了“欺骗”搜索引擎,让搜索引擎以为这是一个直接从存储设备上直接读取的资源不会改变,因此“它的权值可能会相对提高”。这样更有利于网站优化以及页面的抓取,但实际还是需要走服务器从数据库获取数据。优点是数据更新时,可以立即显示在浏览者面前。
 
如何选择:
  • 网站实时性要求比较高,不要使用页面静态化(真静态、伪静态均不适宜)
  • 如果网站访问量较小,没有必要使用静态化技术
  • 如果数据项目不多,但是访问频率极大,建议使用真静态,如新浪新闻频道
  • 如果数据醒目海量使用真静态会生成海量的html静态页面,建议使用伪静态

静态化和缓存的主要区别

  •  页面静态化是将数据库静态化到页面,客户端访问不需要查询数据库,主要存放形式是静态化文件资源,存储于硬盘;
  •  缓存是将数据存储于服务器内存,二者存放位置和形式不一样。

这二者使用主要看业务场景及网站优化的点,比如说秒杀的时候,肯会都要把页面进行静态化放到CDN上面,这样在前端就能抗住大量的并发请求;但是在广告页面的广告数据我们就可以使用页面缓存来实现,同样不用对数据库进行查询,只要访问内存就行。

猜你喜欢

转载自www.cnblogs.com/xiaozengzeng/p/10852108.html