PHP通过缓存页面加速动态内容生成(原理)

    很多网站都是PHP构建的,PHP可以很方便的从文件或数据库中读取内容,然而,响应时间长是它一个缺点,来自用户的每一次请求都可能触发多次对数据库的查询,然后PHP处理查询结果,以某种形式呈现出来,对于复杂的应用或者普通的服务器来说是相当慢的。
 
    有意思的是,这些所谓的“动态”网站可能很少变更内容,有的页面上的文章在发布后可能永远也不会再修改,然而每次用户请求该页面时,php脚本都会去查找这些内容(可能从数据库中查找,也可能从xml文件中查找etc。取决于你的应用),经过很多函数处理之后才将内容输出到你的浏览器上。
 

使用缓存Caching

 
    我们可以使用缓存来解决上面描述的问题,而不需要每次都重新生成页面,只有第一次请求页面的时候才让PHP脚本帮我们生成页面,然后,存储一个PHP脚本输出到浏览器中的内容的备份。下一次,当一个访问者请求一个相同的页面,PHP脚本就会知道它已经生成了这个页面,于是可以不再查询数据库就输出用户请求的内容。
 

原理
 

    下图展示了,请求一个”新闻“页面的过程,因为新闻每天都不一样,所以很有必要将它存储在数据库中而不是存储在一个静态文件中,这样我们可以很方便的更新和搜索新闻。这个新闻页面是一个PHP脚本,它有以下行为:
 
(1)连接到mysql数据库
(2)请求5条最近的新闻
(3)将新闻按时间先后进行排序
(4)读取一个模板文件并替换模板中的变量
(5)输出处理完成的页面给用户

PHP请求页面不使用缓存

    这个过程需要大量的时间,如果每小时只有几个访问者,请求花费的时间和资源是可以忽略的,但是如果每个小时有上千个访问者,情况就会大不一样。

    考虑通过PHP脚本访问新闻和直接请求一个普通的html文件之间的差异。对于web服务器而言,提供一个html文件是很容易的事情,它只需要找到这个文件并将内容输出到浏览器。使用缓存,你可以获得快速响应的体验。

    继续说这个”新闻“的例子,不同的是,这里我们使用缓存(caching),第一个来自用户的请求会让PHP脚本做和上面例子中一样的事情,另外,PHP脚本还会将请求响应的结果(也就是输出在浏览器中的内容)写入一个文件(比如HTML文件)。随后的请求会像下面这样工作:
 

    你会发现,MySQL数据库和模板直接没有建立联系,web服务器只是将一个纯文本格式的html文件返回给了用户浏览器。请求在很短的时间就完成了,用户可以更快的得到他们访问的页面,你的服务器也会减少负载---这样大家都很happy:)

 

    后续将会发布:如何使用PHP实现缓存(这里指文件的缓存)

转载于:https://www.cnblogs.com/phpcode/archive/2012/03/02/2522710.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值