关于缓存:服务器应用程序程序缓存

3次阅读

共计 2130 个字符,预计需要花费 6 分钟才能阅读完成。

服务器应用程序程序缓存

Web Server 服务器之 Apache

  1. Apache 的过期模块 mod_expires.so

通过配置文件管制 HTTP 的 “Expires:” 和 “Cache-Control:” 头内容


# 启用 expires_module 模块
LoadModule expires_module modules/mod_expires.so

# 启用有效期管制
ExpiresActive On

# GIF 有效期为 1 个月,2592000 秒为 1 个月
ExpiresByType image/gif A2592000

# HTML 文档的有效期是最初批改时刻后的一星期
ExpiresByType text/html M604800

# 以下的含意相似
ExpiresByType text/css "now plus 2 months"
ExpiresByType image/jpeg "access plus 2 months"

具体解释 ExpiresByType image/jpeg "access plus 2 months" 的含意为:
ExpiresByType 示意为:由 mime 决定过期配置
image/jpeg 示意为:具体文件的 mime 类型
access 示意:过期工夫从拜访时开始计算,等同于 nowA 参数,还能够设置为 modification 或者 M 参数,示意为,被拜访文件的最初批改工夫开始计算。
months 示意月份,可用的参数有:yearsmonthsweeksdayshoursminutesseconds

  1. Apache 的缓存模块 mod_cache
  • mod_cache: 基于 uri 键的内容动静缓冲模块,缓存响应头和注释,以便在下一个申请时疾速相应它。

    • mod_disk_cache (Apache2.2) / mod_cache_disk (Apache2.4) 基于磁盘的缓冲模块
    • mod_mem_cache.so (Apache2.2) 基于内存的缓冲模块,2.4 版本曾经移除
  • mod_file_cache 提供文件描述符缓存反对,放慢与迟缓的文件系统服务器的文件拜访,只能利用于动态文件。

php 的 APC 和 Opcache

  • Opcache 是一种通过将解析的 php 脚本预编译的字节码寄存在共享内存中来防止每次加载和解析 php 脚本的开销。
  • 解析器能够间接从共享内存读取曾经缓存的字节码,从而大大提高 php 的执行效率。
  • APC 是缓存、优化 php 中间代码的架构,能够缓存 Opcodes。
  • php5.5 当前,Zend Opcache 整合到 php 中,并可代替 APC 应用。此性能默认敞开。

如何应用 Opcache?

  1. 拜访 phpinfo(); 页面,查看 Loaded Configuration File => /etc/php/7.0/fpm/php.ini(php 配置文件 php.ini 所在的文件门路)和 Scan this dir for additional .ini files => /etc/php/7.0/fpm/conf.d(扩大配置文件的目录)
  2. 查看 zend_extension=opcache.so 是否开启:vim /etc/php/7.0/fpm/conf.d/10-opcache.ini(默认是开启的)

php 执行过程

  • 查看 lexing

<?php

$source = <<<EOT
<?php
echo '1111';

EOT;

print_r(token_get_all($source));

mysql 查问缓存

查问缓存相干有两个参数设置:

  1. query_cache_size 查问缓存大小,默认为 16M
  2. query_cache_type 有三个可用值,0 示意不应用查问缓存,1 示意缓存所有的后果,2 示意在 select 语句中应用了 sql cache 指定缓存查问的后果进行缓存,没有指定则不缓存。

设置查问缓存相干的配置

  1. 进入主配置文件中查看 sudo vim /etc/mysql/my.cnf
  2. 进入配置文件 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
query_cache_size = 16M  // 默认查问缓存为 16M
query_cache_type = 1  // 开启查问缓存,默认是没有开启的,须要手动增加这一行 
  1. 重启 mysql 服务器 sudo service mysql restart
  2. 进入数据库 mysql -u root -p
  3. 查看缓存是否开启 show variables like “%query_cache%”;
  4. 查问缓存是否失常运行了 show status like “%Qcache%”;

mysql Memory 存储引擎

原理:

创立表构造应用 ENGINE = MEMORY 生成内存表,表构造存在磁盘上的 .frm 文件中,服务器启动后,用此构造在内存中创立空白表,并默认应用哈希索引。

长处:

  1. 速度比 MyISAM 和 Innodb 存储引擎更快,适宜做热点表的前置缓存。
  2. sql 操作与存储引擎统一。

应用要点:

  1. varchar 这样的可变长度类型将转换为固定长度
  2. mysql 4.1.0 之前,不反对 auto_increment 自增列
  3. 不能蕴含 blob 或 text 列
  4. 重启数据失落,如果有备份,会导致数据与备份不统一
  5. 内存表数据大于 max_heap_table_size 设定值,超出数据会存储到磁盘上
  6. 高负载时扩展性和混合写操作的并发解决性能不佳

原文地址

正文完
 0