# 释放缓存区内存的方法
1)清理pagecache(页面缓存)
# echo 1 > /proc/sys/vm/drop_caches 或者 # sysctl -w vmdrop_caches=1
2)清理dentries(目录缓存)和inodes
# echo 2 > /proc/sys/vm/drop_caches 或者 # sysctl -w vmdrop_caches=2
3)清理pagecache、dentries和inodes
# echo 3 > /proc/sys/vm/drop_caches 或者 # sysctl -w vmdrop_caches=3
执行完之后,你可以使用free -m命令去查看内存情况,在cache/buff这一列下面的值就会减少或者清零。
适合缓存的内容
1 不变的图像,如logo,图标等
2 js、css静态文件
3 可下载的内容,媒体文件
适合协商缓存
1 HTML文件
2 经常替换的
3 经常修改的js、css文件,js、css文件的加载可以加入文件的签名来拒绝缓存,如‘indexcss签名’,‘index签名js’
不建议缓存的内容
1 用户隐私等敏感数据
2 经常改变的API数据接口
NGINX配置缓存策略
本地缓存配置
1 add_header指令:添加状态码为2XX和3XX的响应头信息,设置代码add_header name value [always];,可以设置Pragma、Expires、Cache-Control,可以继承
2 expires指令:通知浏览器过期时长,设置代码expires time;
3 Etag指令:指定签名,设置代码etag on|off,默认on
前端代码和资源压缩
优势
1 让资源文件更小,加快文件在网络中的传输,让网页更快的展现,降低带宽和流量的开销
压缩方式
1 js、css、、html代码的压缩
2 gzip压缩
gzip配置
gzip on|off; #是否开启gzipgzip_buffers 32 4K|16 8K; #缓冲(在内存中缓存几块?每块多大)gzip_comp_level [1-9] #推荐6,压缩级别(级别越高,压得越小,越浪费CPU计算资源)
gzip_disable #正则匹配UA,什么样的Uri不进行gzip
gzip_min_length 200 #开始压缩的最小长度
gzip_>所谓公共指的cache只要一创建是任何一个客户端浏览器都可以通过后台代码访问到它,它面向的是所有用户,相对而言session也是服务器上的一段内存,但他面向的是单个用户。它是服务器的一段内存块,也就是说每个cache一经创建就占用了服务器资源的。所以从这点来说我们就可以说:并不是cache越多越好。cache 是有时间限制的,超过了服务器设定的过期时间,它就会被服务器回收。cache 可以存放任何对象在DotNet环境下通过CacheInsert(string key,object o)方法创建。其中key 代表cache的ID,o代表存到cache里的对象。销毁cache 通过方法CacheRemove(string key)其中key 代表cache的 ID调用cacheCache支持装箱/拆箱 *** 作。如你可以把一个DataSet对象ds通过CacheInsert(dsCache,ds)的方式存到Cache中,可以通过拆箱 *** 作DataSet ds = (DataSet)Cache[dsCache]来访问它。Cache 一般用于数据较固定,用的较频繁的地方。例如可以把进销存系统中可以把产品信息存入cache,在用户调用产品信息时通过调用cache即可,这样从很大程度上减少了用户与数据库的交互,提高了系统的性能。反之,cache不适合用在数据变动快,使用范围很窄的地方。例如把一个具体采购单存入 cache中。4cache 调用注意事项Cache是有时间限制的。超过了服务器设置的过期时间,就会被服务器回收。当cache被回收后对应的内存块就会被清空,再次通过cache[cachekey]访问对象时返回的就是null值。所以以下这种调用就会出现异常DataSet ds = (DataSet)Cache[cacheds];DataRow dr = dsTable[0]Row[0]; //出错,ds为null值,不存在表0。正确的写法应该是:DataSet ds;if(Cache[cacheds] != null){ds = (DataSet)Cache[cacheds];}else{
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)