动态语言静态化

一、什么是动态语言静态化

将现有的PHP等动态语言的逻辑代码生成为静态HTML文件,用户访问动态脚本重定向到静态的HTML文件的过程。
对实时性不高的页面

二、为什么要静态化

  • 动态脚本通常会做逻辑计算和数据查询,访问量越大,服务器压力越大
  • 访问量大时可能造成CUP负载过高,数据库服务器压过大
  • 静态化可以减低逻辑处理压力,降低数据库服务器查询压力

三、静态化的实现方式

使用模板引擎smarty
利用ob系列函数

    ob_start() 打开输出控制缓存
    ob_get_contents() 返回输出缓冲区内容
    ob_clean() 清空输出缓冲区
    ob_end_flush() 冲刷出(送出)输出缓冲区内容并关闭缓冲
  
    ob_start()
    输出到页面的HTML代码
    ob_get_contents()
    ob_end_flush()
    fopen()写入

可以判断文件的inode修改时间,判断是否过期,使用filectime函数

<?PHP
$id = $_GET['id'] ?? '';
$cache_name = md5(__FILE__) . '-' . $id . '.html';
$cache_lifetime = 3600;
if (filectime(__FILE__) <= filectime($cache_name)
    && file_exists($cache_name)
    && filectime($cache_name) + $cache_lifetime > time())
{
    include $cache_name;
    exit;
}
    ob_start();
?>
    <b>THIS IS MY SCRIPT123 id=<?=$id?></b>

<?php
$content = ob_get_contents();
ob_end_flush();
$handle = fopen($cache_name, 'w');
fwrite($handle, $content);
fclose($handle);
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 动态语言静态化 什么是动态语言静态化 将现有php等动态语言的逻辑代码生成为静态html文件,用户访问动态脚本重定...
    谢凌阅读 173评论 0 0
  • 1、PHP语言的一大优势是跨平台,什么是跨平台?一、PHP基础: PHP的运行环境最优搭配为Apache+MySQ...
    __书山有路__阅读 1,528评论 0 15
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,156评论 1 32
  • 懒懒散散无是处, 昏昏沉沉睡意足。 不分时间与地点, 人人嫌弃懒人多! 怎知心中苦闷多? 一时不察易猝倒! 一时不...
    清兮_190f阅读 421评论 0 4
  • 转自游戏狗 2018年初,功能游戏成为市场热点,腾讯、网易等巨头企业纷纷布局,媒体对功能游戏的关注度大幅上升。 伽...
    觉得不是很ok阅读 101评论 0 0