buildvue静态化_页⾯静态化
页⾯静态化和静态缓存
静态缓存:还需要请求php⼀些简单的判断,只是⼀些复杂的逻辑结构不需要再进⾏php处理。如在缓存数据库中的数据,这样就不⽤每次都请求数据库。典型的例⼦就是smarty中有页⾯静态缓存。
静态化:静态化相对于页⾯静态缓存更进了⼀步,使⽤静态化,就不需要使⽤php处理任何业务。每次请求的页⾯就是⼀个HTML页⾯。所以在优化的层⾯上,已经达到了顶层。如dedecms中使⽤⽣成⾸页。下次访问的时候,只是访问index.html。没有任何的php逻辑处理。
使⽤ob缓存制作页⾯静态化:
ob缓存使⽤:
在php解释执⾏中,在返回到服务器(apache/nginx)时,在这个php中,有⼀个输出缓冲区和⼀个程序缓冲区。要返回的内容都被缓冲到这。
输出缓冲:要输出的内容缓冲到这
程序缓冲:是在输出缓冲的下⼀个阶段,如果输出缓冲被关闭,内容将缓冲在这。
输出缓冲:
开启缓冲:ob_start('这⾥可以有⼀个回调函数,也就是前置钩⼦函数');这样接下来的内容都会被缓冲到输出缓冲中。注意:这⾥缓冲的内容只能是http主体内容。如:头信息是不能被缓冲到输出缓冲区的header('');
刷新缓冲:ob_flush()如果程序在开启缓冲区时,中间没有刷新缓冲区,则在脚本运⾏结束之后会⾃动刷新缓冲区。
php编程手册还有很多的ob_系列的函数,可以参见⼿册。
注意:在⼀个页⾯中可以开启多个输出缓冲区,可以使⽤ob_get_level()函数,查看当前处于哪个输出缓冲区中。开启的多个输出缓冲是相互嵌套的就像if()语句嵌套⼀样。关闭时也是关闭相对应的输出缓冲。
程序缓冲:
程序缓冲就⼀个函数flush()来刷新程序缓冲区。不能做任何其他的操作。
弄清了这缓冲区的作⽤,我们可以让每次在程序中得到的数据⽴马刷新到浏览器中。这样就可以做聊天系统。
ob_end_clean();//关闭缓冲区
while(true){
.....
flush();//刷新程序缓冲区,因为程序缓冲区不能做任何的操作,只有刷新。这样我们将得到的内容⽴马个刷新到浏览器中展现出来
}
注意:有的浏览器需要到达⼀定的字节数量才能显⽰在浏览器中。我们可以使⽤⼀个技巧str_repeat(' ',1024);在while()之前输出,这样内容就多了。
我们可以通过输出缓冲将内容写到相应的html⽂件中,这样就可以做页⾯静态化。使⽤程序控制,下次请求的时候就直接请求HTML。
使⽤静态化注意的问题:
css/js/img路径可能不对,所以在做程序的时候,这些路径最好是⽣成根路径/
可能有的地⽅的数据需要是最新的。如⽤户评论,在解决这个问题我们可以使⽤ajax技术来弥补这个缺憾,做到部分数据实时性。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论