简单的页面缓冲技术

2016-01-29 13:38 6 1 收藏

简单的页面缓冲技术,简单的页面缓冲技术

【 tulaoshi.com - PHP 】

简单的页面缓冲技术  --------------------------------------------------------------------------------     2003-08-15 14:21:55     http://www.phprecord.com   其实说它为技术,也许不能说是真正的技术。这只不过是我自已想出来的页 面处理的方法,当然与别人的想法可能是一致的。不过我还是想给它一个好听的 名字。那么我这里所指的页面缓冲是什么呢?就是指将动态生成的页面保存起来 ,供下一次的使用。这样下一次访问它可能就不需要动态生成了。就象提供了一 个cache 一样。在我的网站上,也许你的网站也是如此,使用了象模板之类的技 术,这样用户所看到的页面就是动态生成的。但是一个页面对于你是这样,对于 别人可能还是这样,即在一段时间内是不会变化的,如果将上次生成的结果直接 返回给下一次访问的用户不是更好吗?减少了生成时间,效率要高一些。我想随 着网站的发展,速度与效率问题还是要考虑的。这里我给出我的实现,希望对大 家有所帮助。只是一个思路,没有具体的实现。 使用条件   是不是所有的网页最好都使用呢?我想不需要,而且也不可能。之所以能缓 冲就是因为下一次访问与上一次访问的内容可能是完全一样的。所以对于经常变 化的页面就不合适了。比如页面上要显示计数信息的就不太合适。还有就是如果 你的动态页面输出时,没有先输出到变量中,而是直接返回给用户,如使用echo ,print ,readfile之类的输出,我个人认为现在还作不到。因为无法将输出结 果得到,保存到文件中去(反正我是想了半天没有想出有什么可以将直将输出的 东西截下来,重定向到文件中去)。那么比较适的动态页面的处理就是:输出结 果应该可以放到一个字符串之中。所以使用条件就是:1.页面基本不会变化 2.动 态页面的处理结果可以存放到字符串中   这样使用模板类来处理动态页面就很好了。通过在模板中设置可替换的变量 ,然后根据实际的值替换相应的模板中的变量,同时可以将结果放到字符串中进 行输出,这种模板类的处理非常适合保存处理后的页面。当然不使用模板类,也 可以通过字符串的处理来生成输出结果也是可行的。至于怎么做就不讨论了。 实现   如前所述,不是一个真正的实现,而是一个实现的思路。   处理流程: 1.根据访问的要求,生成缓冲文件名 2.查看文件名是否存在,如果文件不存在,则生成动态页面,将页面保存,同时 输出结果,结束;如果存在,则执行第3步 3.统计文件的修改时间,及与动态页面生成有关的文件的修改时间 4.比较缓冲文件的修改时间与其它页面的修改时间,如果其它页面修改时间大于 缓冲文件修改时间,认为动态结果可能会发生变化,则重新生成动态页面结果, 保存到文件中,且输出结果,结束;否则执行第5步 5.说明缓冲文件最新,则直接输出缓冲文件   这就是我的处理。至于缓冲文件如何保存,可以建一个临时目录也可以使用 数据库处理。如果使用了数据库则判断文件是否最新的方式也应作变化,比如在 数据库中增加生成时间字段,比较这个时间字段与其它文件的修改时间即可。方 法大家自已想。 我的具体实现的例子   为了帮助大家有个感性认识,这里我给出在我的主页上实现的基于文件处理 的方法。只有主要的处理代码,不完整。 ---------------------------------------------------------------------- ---------- 
<?  1 $tmpfile="../tmp/".basename($REQUEST_URI);  2 $tmpfile=str_replace("?", "_", $tmpfile);来源:http://www.tulaoshi.com/n/20160129/1490907.html

延伸阅读
在应用中,我们常常需要Thread缓冲池来做一些事以提高程序的效率和并发性。本文演示了如何利用Queue这种数据结构实现一个简单的Thread缓冲池。 一个Thread缓冲池可以设计成以下这样:缓冲池由几个工作Thread和一个Queue组成,Client负责把任务放到Queue里面(put方法),而工作Thread就依次取出这些任务并执行它们(get方法)。 Queue的一个经...
标签: Web开发
重复:在整个站点中重复实现某些页面设计风格。 重复的成分可能是某种字体、标题Logo、导航菜单、页面的空白边设置、贯穿页面的特定厚度的线条等。 颜色作为重复成分也很有用:为所有标题设置某种颜色,或者在标题背后使用精细的背景。 用对比来吸引读者的注意力。 通过对比来抓住读者的注意力,例如,你可以让标题在黑...
标签: ASP
  <html <head <title TimeBar Version 1.0 </title <meta http-equiv="Content-Type" content="text/html; charset=gb2312" <meta http-equiv="Refresh" content="20;url=" <style td {font-size: 10.5pt; color: 147e19; font-family: Courier New;} </style ...
标签: Web开发
译自: iPad终于发布了,那么如果用样式区分iPad和iPhone中的safari浏览器,Jason Grigsby做了一个有用的实验。 就绝大部分而言,iPad上的移动版safari和iPhone上的事一样的。我发现的一个不同是,iPad上的webkit支持基于方向(orientation)的CSS媒体查询(media query)声明。 我为iPad创建了。 在CSS中使用orientation 非常简单,代码就行...
标签: PHP
在PHP编程中, 我们经常会遇到一些直接产生输出的函数, 如passthru(),readfile(), var_dump() 等. 但有时我们想把这些函数的输出导入到文件中,或者先经过处理再输出, 或者把这些函数的输出作为字符串来处理. 这时我们就要用到 Output Buffer(输出缓冲) 函数了.   处理输出缓冲的函数主要有这么几个: ob_start() 开始输出缓...