首页 PHP页面静态化的两种方式

PHP页面静态化的两种方式

举报
开通vip

PHP页面静态化的两种方式 PHP页面静态化是大多数 PHP程序员耳熟能详、随手可写的功能了,在这里不讨论如 何生成静态页面的细节,而是考虑:将静态缓存功能作为系统的哪个部分的结构来实现(基 于 MVC模式,如果对 MVC不了解,对于下面的内容的理解可能有困难)。 。(代码使用 PHPLIB在我的总结有两种主要的方式,其他的还没有发现,如果你有第三种 可行的方案,请给我发一份示意代码,谢谢 template 示范) 第一种方式:由控制器来调用单独的缓存类。在这个时候缓存类是一个单独的类,与模板引 擎相对独立,在...

PHP页面静态化的两种方式
PHP页面静态化是大多数 PHP程序员耳熟能详、随手可写的功能了,在这里不讨论如 何生成静态页面的细节,而是考虑:将静态缓存功能作为系统的哪个部分的结构来实现(基 于 MVC模式,如果对 MVC不了解,对于下面的内容的理解可能有困难)。 。(代码使用 PHPLIB在我的总结有两种主要的方式,其他的还没有发现,如果你有第三种 可行的 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 ,请给我发一份示意代码,谢谢 template 示范) 第一种方式:由控制器来调用单独的缓存类。在这个时候缓存类是一个单独的类,与 模板 个人简介word模板免费下载关于员工迟到处罚通告模板康奈尔office模板下载康奈尔 笔记本 模板 下载软件方案模板免费下载 引 擎相对独立,在一个请求开始的时候,缓存类即被调用,并进行一些相关的缓存操作。这一 工作甚至可以直接在调度器中完成(如果存在调度器 dispatcher的话)。下面给出一个简 单的代码示范(只有框架): 1. enableCache) 9. //没有启用缓存 10. { 11. //调用模型层、视图层来完成请求 12. } 13. else 14. //启动了缓存 15. { 16. if ($cache->isCached) 17. //如果文件已经被缓存 18. { 19. //重定向到缓存文件,getCacheFile 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 根据 url生成一个唯一的静态文 件名 20. header('Location:'.$cache->getCacheFile($_SERVER['REQUEST_URI'] )); 21. return; 22. } 23. else 24. //如果文件还没有被缓存,则我们需要创建该文件并写入内容 25. { 26. //下面三行代码使用的 PHPLIB template的代码 27. $tpl->set_file('index', 'index.html');//载入模板文件 28. $tpl->set_var('title', 'Hello world');//赋值 29. $html = $this->parse('indexHtml', 'index');//解析模板文件并返回解 析结构字符串 30. //$html 变量包含了文件的内容,writeCache方法将其写入到文件 31. $cache->writeCache($html); 32. //重定向 33. header('Location:'.$cache->getCacheFile($_SERVER['REQUEST_URI'] )); 34. } 35. } 36. } 37. } enableCache) //没有启用缓 存 { //调用模型层、视图层来完成请求 } else //启动了缓 存 { if ($cache->isCached) //如果文件已经被缓 存 { //重定向到缓存文件,getCacheFile 方法根据 url生成一个唯一的 静态文件 名 header('Location:'.$cache->getCacheFile($_SERVER['REQUEST_URI'])); return; } else //如果文件还没有被缓存,则我们需要 创建该文件并写入内容 { //下面三行代码使用的 PHPLIB template 的代 码 $tpl->set_file('index', 'index.html');//载入模板文 件 $tpl->set_var('title', 'Hello world');//赋值 $html = $this->parse('indexHtml', 'index');//解析模板文件并返回解析结构字符 串 //$html变量包含了文件的内容,writeCache 方法将其写入到文 件 $cache->writeCache($html); //重定 向 header('Location:'.$cache->getCacheFile($_SERVER['REQUEST_URI'])); } } } } 第二种方法:由模板类来控制缓存。对于任何请求,控制器都直接调用模板类来完成工作, 由模板类自己完成与缓存相关的工作。下面的代码我只列出框架: view plaincopy to clipboardprint? 1. 2. class N_View_CacheTemplate extends Template_PHPLIB 3. { 4. /** 5. * html静态化目录,相对于系统根目录 6. * 7. * @var string 8. */ 9. protected $cacheDir = './cache/'; 10. 11. /** 12. * 是否打开静态缓存 13. * 14. * @var bool 15. */ 16. protected $enableCache = false; 17. 18. /** 19. * 页面缓存时间 20. * 21. * @var int 22. */ 23. protected $cacheTime = 900; 24. 25. protected $htmlFullPathName; 26. 27. protected $htmlFileName; 28. 29. /** 30. * 如果该选项打开,则在解析模板之后,自动生成对应缓存静态文件 31. * 32. * @var unknown_type 33. */ 34. private $_autoCache = false; 35. 36. 37. public function __construct($enableCache = false, $root = ".", $unknowns = "remove") 38. { 39. parent::__construct($root, $unknowns); 40. $this->enableCache = $enableCache; 41. $this->_cache(); 42. } 43. 44. /** 45. * 返回当前对象实例 46. * 47. * @return N_View_CacheTemplate 48. */ 49. public function getInstance() 50. { 51. return getInstanceOf(__CLASS__); 52. } 53. 54. /** 55. * 开始缓存调用 56. */ 57. private function _cache() 58. { 59. if ($this->enableCache) 60. { 61. if (!$this->isCached) 62. { 63. $this->_writeCache(); 64. } 65. header(‘Location:’.$this->cacheDir().$this->htmlFileName); 66. } 67. } 68. 69. //检测是否已经缓存了 70. public function isCached() 71. { 72. } 73. 74. //生成缓存 75. private function _writeCache() 76. { 77. } 78. 79. //更新缓存 80. private function _updateCache() 81. { 82. } 83. class N_View_CacheTemplate extends Template_PHPLIB { /** * html静态化目录, 相对于系统根目录 * * @var string */ protected $cacheDir = './cache/'; /** * 是否打开静态缓存 * * @var bool */ protected $enableCache = false; /** * 页面缓存时 间 * * @var int */ protected $cacheTime = 900; protected $htmlFullPathName; protected $htmlFileName; /** * 如果该选项打开,则在 解析模板之后,自动生成对应缓存静态文件 * * @var unknown_type */ private $_autoCache = false; public function __construct($enableCache = false, $root = ".", $unknowns = "remove") { parent::__construct($root, $unknowns); $this->enableCache = $enableCache; $this->_cache(); } /** * 返回当前对象实 例 * * @return N_View_CacheTemplate */ public function getInstance() { return getInstanceOf(__CLASS__); } /** * 开始 缓存调用 */ private function _cache() { if ($this->enableCache) { if (!$this->isCached) { $this->_writeCache(); } head er(‘Location:’.$this->cacheDir().$this->htmlFileName); } } //检测 是否已经缓存了 public function isCached() { } //生成缓存 private function _writeCache() { } //更新缓存 private function _updateCache() { } 两种方式各有特点,从功能上来说: 第一种方式(独立缓存类)可较大程度的控制缓存,无论是否使用模板引擎、无论使用哪种 模板引擎,对其都几乎没有影响。如果模板引擎本身也提供静态缓存功能,则直接关闭模板 缓存功能即可; 第二种方式由于缓存功能是嵌入在模板引擎之内的,对于每一步的页面生成都能很好的把握, 所以可以更好的定制输出信息。 两种方式在核心处理上是一样的,区别只是他们的在模式中定位的不同,这在框架的编写中 是必须要考虑的。
本文档为【PHP页面静态化的两种方式】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_853962
暂无简介~
格式:pdf
大小:172KB
软件:PDF阅读器
页数:0
分类:互联网
上传时间:2012-02-16
浏览量:22