页面静态化

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

 

静态化缘由:前端

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

  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上面,这样在前端就能抗住大量的并发请求;可是在广告页面的广告数据咱们就可使用页面缓存来实现,一样不用对数据库进行查询,只要访问内存就行。

相关文章
相关标签/搜索