服务器缓存技术

对服务器在网站中位置作用有个大概了解:lamp架构图

LAMP网站架构方案分析

上图主要介绍了三种服务器,也是比较常用的服务器,下面就介绍这三种服务器的缓存配置。

apache是作为正向代理服务器缓存,nginx和squid主要作为反向代理服务器缓存.

 

服务器缓存工作原理

 

上面是一个简单的流程图:我先描述一下:

  1. 用户1访问A页面,服务器解析A页面返回给用户1,同时在服务器内存上做一定映射,把A页面缓存在硬盘上面
  2. 用户2访问A页面,服务器直接根据内存上的映射找到对应的页面缓存,直接返回给用户2,这样就减少了服务器对同一页面的重复解析

服务器缓存和浏览器缓存的区别:

  • 服务器缓存是把页面缓存到服务器上的硬盘里,而浏览器缓存是把页面缓存到用户自己的电脑里

服务器缓存技术

  1. apche缓存配置:

apache2.2支持mod_cache 和 mod_file_cache两个模块,官方手册的说明:

mod_cache实现了一个RFC 2616兼容的HTTP本地缓存(web服务器)或HTTP代理缓存(代理服务器)。mod_cache需要一个或多个存储管理模块提供的服务才能正常工作。目前官方发布的存储管理模块有两个:

mod_disk_cache
一个基于磁盘的存储管理模块。
mod_mem_cache
一个基于内存的存储管理模块。 mod_mem_cache可以被配置为两种不同的操作模式:①缓存打开的文件描述符;②在堆(heap)上缓存对象。 mod_mem_cache既可以用于缓存本地生成的内容,也可以用于为 反向代理模式下的 mod_proxy(参见 ProxyPass)缓存后端服务器输出的内容。

 

使用方法:

  • 编译mod_cache,mod_mem_cache,mod_disk_cache 模块

Cd /root/httpd-2.2.3/modules/cache

/usr/local/apache/bin/apxs -i -a -c mod_cache.c cache_util.c cache_cache.c cache_storage.c cache_pqueue.c cache_hash.c //编译

/usr/local/apache/bin/apxs -i -a -c mod_mem_cache.c //编译

/usr/local/apache/bin/apxs -i -a -c mod_disk_cache.c //编译

  • 编辑httpd.conf文件

添加:

  

/usr/local/apache/bin/apachectl restart  //重启apche

 

  • 内存缓存参数说明:

1,CacheEnable mem /images 缓存images下面的内容,这里的 mem只是一个缓存类型,指示mod_cache使用内存的存储管理器通过实施mod_mem_cache 。缓存类型disk指示mod_cache使用基于磁盘的存储管理的实施mod_disk_cache 。缓存类型,fd指示mod_cache使用文件描述符缓存实施mod_mem_cache

2,MCacheSize最大内存使用量,插入在缓存和对象大小的对象是大于剩余内存,将被删除,直到新的对象可以被缓存。 被删除的对象选择使用指定的算法MCacheRemovalAlgorithm

3,MCacheRemovalAlgorithm缓存算法:

LRU (最近最少使用)
LRU删除文件,没有时间最长的被访问的。
GDSF(GreadyDual尺寸)
GDSF分配一个优先的文件缓存文件的费用的基础上,缓存大小和怀念。以最低的优先权文件被删除第一次。

4,MCacheMaxObjectCount最大缓存对像个数

5,MCacheMaxObjectCount最大缓存对像字节数

6,MCacheMinObjectSize最小缓存对像字节数

7,CacheMaxExpire 最大缓存结止时间

8,CacheDefaultExpire  默认缓存结止时间

9,CacheDisable /php       不缓存php下面的内容

硬盘缓存参数说明;

1,cacheroot /cache  缓存存放的目录

2,#CacheSize 256         缓存空间大小单位KB

3,CacheEnable disk /    设置缓存方式

4,#CacheMaxFileSize 64000    最大缓存文件大小

5,#CacheMinFileSize 1      最小缓存文件大小

6,#CacheGcDaily 23:59     缓存清理时间

7,CacheDirLength 3        缓存文件夹名子字符长度

8,CacheDirLevels 4        缓存目录,子目录层次

关于参数说明和更多的学习参考:http://blog.51yip.com/apachenginx/898.html

http://apache.jz123.cn/mod/mod_cache.html

nginx缓存配置

nginx是一个很好的静态服务器,很适合存放静态文件如css,图片,视频文件等等,可以很好的减去服务器的鸭梨!

nginx的缓存配置主要使用 proxy_cache模块实现,工作原理就是就用户请求缓存到本地的某个目录下,当再次请求时候,直接读取缓存,从而减轻服务器鸭梨

配置nginx.conf,下面是一个经典的缓存配置

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
user  www www;
worker_processes 2;
error_log  / var /log/nginx_error.log  crit;
worker_rlimit_nofile 65535;
events
{
   use epoll;
   worker_connections 65535;
}
 
http
{
   include       mime.types;
   default_type  application/octet-stream;
 
   server_names_hash_bucket_size 128;
   client_header_buffer_size 32k;
   large_client_header_buffers 4 32k;
   client_max_body_size 8m;
 
   sendfile on;
   tcp_nopush     on;
   keepalive_timeout 0;
   tcp_nodelay on;
 
   fastcgi_connect_timeout 300;
   fastcgi_send_timeout 300;
   fastcgi_read_timeout 300;
   fastcgi_buffer_size 64k;
   fastcgi_buffers 4 64k;
   fastcgi_busy_buffers_size 128k;
   fastcgi_temp_file_write_size 128k;
   ##cache##
   proxy_connect_timeout 5;
   proxy_read_timeout 60;
   proxy_send_timeout 5;
   proxy_buffer_size 16k;
   proxy_buffers 4 64k;
   proxy_busy_buffers_size 128k;
   proxy_temp_file_write_size 128k;
   proxy_temp_path /home/temp_dir;
   proxy_cache_path /home/cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;
   ## end ##
 
   gzip    on;
   gzip_min_length   1k;
   gzip_buffers   4 8k;
   gzip_http_version  1.1;
   gzip_types   text/plain application/x-javascript text/css  application/xml;
   gzip_disable "MSIE [1-6]\." ;
 
   log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
              '$status $body_bytes_sent "$http_referer" '
              '"$http_user_agent" $http_x_forwarded_for' ;
   upstream appserver {
         server 192.168.1.251;
   }
   server {
         listen       80 default ;
         server_name www.gangpao.com;
         location ~ .*\.(gif|jpg|png|htm|html|css|js|flv|ico|swf)(.*) {
               proxy_pass http: //appserver;
               proxy_redirect off;
               proxy_set_header Host $host ;
               proxy_cache cache_one;
               proxy_cache_valid 200 302 1h;
               proxy_cache_valid 301 1d;
               proxy_cache_valid any 1m;
               expires 30d;
         }
         location ~ .*\.(php)(.*){
              proxy_pass http: //appserver;
              proxy_set_header        Host $host ;
              proxy_set_header        X-Real-IP $remote_addr ;
              proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for ;
         }
         access_log /usr/local/nginx/logs/www.gangpao.com.log;
   }
}

 

 

 

1、http段设置。 
proxy_temp_path /home/temp_dir;设置临时目录 
proxy_cache_path /home/cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;设置缓存目录为二级目录,共享内存区大小,非活动时间,最大容量,注意临时目录要跟缓存目录在同一个分区。 
2、server段设置 
请求静态文件设置。 
proxy_cache cache_one;设置缓存共享内存区块,也就是keys_zone名称。 
proxy_cache_valid 200 302 1h;设置http状态码为200,302缓存时间为1小时。 
expires 30d;设置失期时间,为30天 
请求动态文件设置。 
proxy_pass http://appserver;不进行缓存,直接转到后端服务器

测试:当客户端发起http请求时在服务器上会产一个缓存文件如

/home/cache/0/b9/8bd841b1c44ee5b91457eb561e44eb90

更详细的参数说明:

http://wiki.nginx.org/NginxChsHttpProxyModule#proxy_cache_valid

http://linux008.blog.51cto.com/2837805/547236

 

squid的缓存配置

之前没有接触过squid,这些都是现学的,下面介绍一下squid:

Squid是一个高性能的代理缓存服务器,可以加快内部网浏览Internet的速度,提高客户机的访问命中率。Squid不仅支持HTTP协议,还支持FTP、gopher、SSL和WAIS等协议。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。

Squid将数据元缓存在内存中,同时也缓存DNS查寻的结果,除此之外,它还支持非模块化的DNS查询,对失败的请求进行消极缓存。Squid支持SSL,支持访问控制。由于使用了ICP,Squid能够实现重叠的代理阵列,从而最大限度的节约带宽。

Squid能够增强访问控制,提高安全性。可以针对特定的的网站、用户、网络、数据类型实施访问控制等

安装squid---安装是最新的版本

下载:wget http://www.squid-cache.org/Versions/v3/3.1/squid-3.1.15.tar.gz

tar xzvf squid-3.1.15.tar.gz

cd squid-3.1.15

./configure --prefix=/usr/local/squid

make && make install

******************************安装ok

 

配置文件:

vi /usr/local/etc/squid.conf

  

 

生成cache目录

/usr/local/squid/sbin/squid –z

自动生成

启动squid

./squid

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值