页面静态化

页面静态化

一、概念

  1. 静态化网站:纯Html、css、js做的网站
    ①请求到Apache,直接返回HTML页面,速度快(不需要加载PHP模块,不需要查询数据库)
    ②不使用数据库,sql注入等攻击方式无法下手(安全)

    动态化网站:包含PHP或其他动态脚本语言实现的网站
    ①更好的应对数据的变化(数据交互性好)

    为提高访问效率,将动态化网站转化为静态化网站,这就是页面静态化

  2. 压力测试
    测试工具:Apache的ab测试(Apache安装目录、/bin/ab.exe)
    需要配置bin目录到环境变量 ,检测是否配置,ab命令

    ab -n 1000 -c 100 http://www.tpshop.com/index.php

    -n : 总的请求数
    -c : 并发级别,同时发送的请求数

    网址:如果直接是域名,后面加/

    可以将测试数据保存到文件
    ab -n 1000 -c 100 http://www.tpshop.com/index.php > F:/abtest.txt

并发概念

QPS :query per second 每秒查询数

RPS :Request per second 每秒处理的请求数

二、真静态

页面静态化分为真静态伪静态

真静态

从url地址看,是静态页面,真实访问到的是静态页面

为动态页面生成静态页面,以后就访问静态页面

伪静态

从url地址看,是静态页面,真实访问到的是动态脚本页面

通过Apache的重写机制,将静态页面的url访问地址,可以换成动态页面的访问地址

三、三大缓存技术

1.浏览器缓存、程序缓存、ob缓存

浏览器缓存

浏览器接收服务器返回的数据,每达到一定的量,就显示到页面上,如果最后一次没达到量,也显示到页面

程序缓存:

每次发送PHP请求,php每一次的输出都会先存到程序缓存中,当整个PHP程序执行结束,在返回给apache,最后返回到浏览器

程序缓存是语言底层实现的,人为不可操控

这里写图片描述

ob缓冲:

每次返送PHP请求,如果开启ob缓冲,php每一次的输出都会先存到ob缓冲中,当以下情况发生时,数据会从ob缓冲送到程序缓存

  1. 整个PHP程序执行结束

  2. ob缓冲空间被占满

  3. 开发者手动操作

huancun2

2.常用ob缓冲函数

ob_start()  开启ob缓冲
  ob_get_clean()    获取然后清除ob缓冲区内容
  ob_get_contents() 获取ob缓冲内容
  ob_get_flush()    获取并送出ob缓冲内容,送到程序缓存后,清空ob缓冲空间
ob_clean()  清空ob缓冲
  ob_end_clean()    清空并关闭ob缓冲
  ob_end_flush()    送出并关闭ob缓冲

3.使用ob缓存实现真静态

真静态:将动态页面的输出内容,保存到静态html页面。

使用ob缓存,可以获取页面的输出内容,

使用file_put_contents函数将字符串写入文件。

比如以前台首页为例:修改Home分组Index控制器index方法

ob1

生成的静态文件

ob2

静态文件访问路径:http://www.tpshop.com/Static/index.html

如果数据库的数据发生变化,需要重新生成静态页面。

操作思路:方法一:在后台设置删除静态文件功能, 可以实时更新,但是需要手动删除,(需要手动删除静态文件,所以其实也不是严格实时)

​ 方法二:设置真静态文件生命周期自动更新静态文件,但是有延迟

如果要严格遵循实时更新,要使用伪静态

4.真静态缓存生命周期

真静态文件的生命周期(有效期)

当前时间 - 文件生成时间 < 生命周期

通过fliemtime函数获取文件上次被写入的时间

修改Home分组Index控制器index方法,使用静态化的html页面之前,先进行有效期判断。

ob3

四、伪静态

1.伪静态是相对真实静态来讲的,通常我们为了增强搜索引擎的友好面,都将文章内容生成静态页面,但是有的朋友为了实时的显示一些信息。或者还想运用动态脚本解决一些问题。不能用静态的方式来展示网站内容。但是这就损失了对搜索引擎的友好面。怎么样在两者之间找个中间方法呢,这就产生了伪静态技术。就是展示出来的是以html一类的静态页面形式,但其实是用PHP、ASP一类的动态脚本来处理的。

需要通过Apache的重写机制进行配置

1.修改apache主配置文件,开启rewrite模块
2.修改虚拟主机配置文件,在需要重写的站点,将所有的AllowOverride 配置项设置为All
3.重启apache
4.在项目根目录创建一个.htaccess文件.并设置对应的重写规则。

2.简单伪静态使用

原始页面:http://www.tpshop.com/index.php/Home/Index/detail/id/24

伪静态地址:http://www.tpshop.com/detail_24.html

修改项目根目录.htaccess文件,重新设置重写规则:

这里写图片描述

RewriteEngine 重写引擎

RewriteRule 重写规则 正则匹配的域名之后的内容 实际访问的地址

RewriteCond 重写条件

五、防盗链

盗链:盗用链接,在自己网站上,使用自己网站服务器上没有的一些资源文件。一般是使用技术手段,将别人服务器上的资源文件的链接地址获取到,在自己网站展示对应的资源。

原理:通过检测请求来源域名,如果不是本网站,则显示指定的页面或图片

在.htaccess文件中添加规则

防盗链

注意:使用ueditor上传的图片无法获取到来源域名,如果需要在编辑器中正常显示图片,需要做以下兼容处理,但是该图片就不能防盗链了

防盗链2

六、综述

1、真静态、动态、伪静态的比较

纯静态网页优势:

1.当访问者访问网页的时候,不读取数据库,直接访问网站空间对应的文件。(直接读取文件)

2.纯静态的网页对搜索引擎友好,是最容易被搜索引擎所收录的。(易收录)

3.由于访问网页的时候,不需要服务器做过多的处理,对服务器的压力最小,所以,更容易应对高访问量。(节省服务器压力)

4.一些面对数据库的攻击比如SQL注入攻击,在面对静态网页的时候常常难以从地址入手。(安全性高)

纯静态网页劣势:

1.由于静态网页需要生成文件,所以当网站内容更新频率高,更新数据量大的时候,对服务器磁盘的写入也会很频繁;(服务器的负担)

2.在不采用其他技术的时候,如果更改了模板,所有相关的html网页都要重新生成,这在面对大数据量的时候,也不是一件很好玩的事。(模板修改、对应变化)

动态页优势:
  1. 动态页由于不用生成html文件,所以可以节省服务器空间,这样我们可以把更多的资金放在数据库上,节省出来的服务器空间可以用来放更多的图片附件等文件;(节省服务器空间)
  2. 更好的应对数据的变化。
动态页劣势:

1.不如静态的网页容易被收录(收录难)

2.一些面对数据库的攻击比如SQL注入攻击,在面对动态网页的时候常常容易从地址入手(安全性低)

伪静态页优势:

1.在网址的形式上看,伪静态的地址和静态的可以一摸一样,普通的访问者不容易分出是真静态还是伪静态,同时蜘蛛一般也会把这种形式的网页当做是静态的来处理。(易收录)

伪静态页劣势:

1.伪静态相对动态来说,更加消耗服务器资源,因为网页地址需要按事先设定好的伪静态规则来进行正则匹配,这一个过程是消耗资源的。(消耗服务器资源)

2、应用场景的说明

采用哪种方式完全取决于这个网站的定位和类型

从SEO的角度上来说,行业资讯与综合门户站都整体采用真静态页面,因为他们需要让百度搜索引擎抓取页面来引导流量维持网站的生存。

相对的企业网站和社交网站一般就会使用伪静态和动态页面,因为它们一般不从搜索引擎带流量,更注重其他的推广方式。

从制作网页的角度上来说,行业资讯和综合门户站因为内容过多,为了方便用户页面一般都会比较简单易懂,这样才可以在首页放下更多的内容和栏目,使用真静态页面

而企业网站和社交网站的网页一般都比较高大上,各种flash特效或者JS特效,这种只能用伪静态和动态页面来做。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值