xiaoyi's blog
首页
  • 后端文章

    • PHP
  • 学习笔记

    • 《Git》学习笔记
  • MySQL
  • NoSQL
  • 中间件
  • Linux
  • Nginx
  • 网络
  • Mac
  • 学习笔记

    • 《Nginx》学习笔记
  • 学习
  • 博客搭建
  • 技术文档
  • GitHub技巧
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
  • 网站
  • 资源
  • 分类
  • 标签
  • 归档
GitHub

xuexuguang

后端新秀
首页
  • 后端文章

    • PHP
  • 学习笔记

    • 《Git》学习笔记
  • MySQL
  • NoSQL
  • 中间件
  • Linux
  • Nginx
  • 网络
  • Mac
  • 学习笔记

    • 《Nginx》学习笔记
  • 学习
  • 博客搭建
  • 技术文档
  • GitHub技巧
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
  • 网站
  • 资源
  • 分类
  • 标签
  • 归档
GitHub
  • 学习

  • GitHub技巧

  • 面试

    • 面试问题集锦
    • PHP基础
    • 正则表达式
    • PHP文件操作
    • PHP会话控制
    • 自定义函数及内置函数
    • MVC对比
    • linux
    • MySQL数据库基础
    • MySQL创建高性能的索引
    • MySQL的SQL优化
    • MySQL的高可扩展和高可用
    • MySQL安全
    • 常见算法
    • 常见数据结构
    • 高并发解决方案
    • 流量优化
    • 浏览器缓存和数据压缩
    • 图片优化
    • 静态化处理
      • 什么是动态语言静态化?
      • 为什么要静态化?
      • 静态化的实现方式
      • 使用模版引擎
      • 使用ob系列函数
      • 代码示例
    • 动态语言并发处理
    • 数据库缓存优化
    • 负载均衡
  • 博客搭建

  • 心情杂货

  • 技术文档

  • 实用技巧

  • 友情链接
  • 更多
  • 面试
xuexuguang
2020-12-31

静态化处理

# 动态语言静态化

# 什么是动态语言静态化?

将现有的PHP等静态语言生成的数据生成为HTML,用户访问动态脚本重定向到HTML文件的过程。一般是对实时性要求不高的页面进行动态语言静态化。

# 为什么要静态化?

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

# 静态化的实现方式

# 使用模版引擎

使用Smarty的缓冲机制生成静态HTML缓冲文件

// 缓冲目录
$smarty->cache_dir = $ROOT."/cache";
// 是否开启缓冲
$smarty->caching = true;
// 缓冲时间 
$smarty->cache_lifetime = 3600;
// 渲染页面
$smarty->display(string template[,string cacheid,string compile_id]);
// 清除所有缓冲  
$smarty->clear_all_cache();
// 清除指定的缓冲 
$smarty->clear_cache('file.html');
1
2
3
4
5
6
7
8
9
10
11
12

# 使用ob系列函数

// 打开输出控制缓冲
ob_start();
// 返回输出缓冲区内容
ob_get_contents();
// 清空输出缓冲区
ob_clean()
// 冲刷出输出缓冲区并关闭缓冲 
ob_end_flush()
// 可以判断文件的修改时间,判断是否过期
filectime()
1
2
3
4
5
6
7
8
9
10

# 代码示例

<?php
ob_start();
$cache_file = md5(__FILE__)."html";
$cache_lifetime = 3600;
if (filectime(__FILE__) <= filectime($cache_file) && file_exists($cache_file) && filectime($cache_file) + 3600 > time() ) {
    include $cache_file;
    exit;
}
?>
<b>this is html content</b>
<?php
$contents = ob_get_contents();
ob_end_flush();
$handle = fopen($cache_file,'w');
fwrite($handle,$contents);
fclose();
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
编辑
#高并发面试题
上次更新: 2020/12/31, 06:55:18
图片优化
动态语言并发处理

← 图片优化 动态语言并发处理→

最近更新
01
MVC对比
12-31
02
负载均衡
12-31
03
数据库缓存优化
12-31
更多文章>
Theme by Vdoing | Copyright © 2020-2020 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式