‘壹’ 常用的缓存技术
第一章 常用的缓存技术
1、常见的两种缓存
本地缓存:不需要序列化,速度快,缓存的数量与大小受限于本机内存
分布式缓存:需要序列化,速度相较于本地缓存较慢,但是理论上缓存的数量与大小无限(因为缓存机器可以不断扩展)
2、本地缓存
Google guava cache:当下最好用的本地缓存
Ehcache:spring默认集成的一个缓存,以spring cache的底层缓存实现类形式去操作缓存的话,非常方便,但是欠缺灵活,如果想要灵活使用,还是要单独使用Ehcache
Oscache:最经典简单的页面缓存
3、分布式缓存
memcached:分布式缓存的标配
Redis:新一代的分布式缓存,有替代memcached的趋势
3.1、memcached
经典的一致性hash算法
基于slab的内存模型有效防止内存碎片的产生(但同时也需要估计好启动参数,否则会浪费很多的内存)
集群中机器之间互不通信(相较于Jboss cache等集群中机器之间的相互通信的缓存,速度更快<--因为少了同步更新缓存的开销,且更适合于大型分布式系统中使用)
使用方便(这一点是相较于Redis在构建客户端的时候而言的,尽管redis的使用也不困难)
很专一(专做缓存,这一点也是相较于Redis而言的)
3.2、Redis
可以存储复杂的数据结构(5种)
strings-->即简单的key-value,就是memcached可以存储的唯一的一种形式,接下来的四种是memcached不能直接存储的四种格式(当然理论上可以先将下面的一些数据结构中的东西封装成对象,然后存入memcached,但是不推荐将大对象存入memcached,因为memcached的单一value的最大存储为1M,可能即使采用了压缩算法也不够,即使够,可能存取的效率也不高,而redis的value最大为1G)
hashs-->看做hashTable
lists-->看做LinkedList
sets-->看做hashSet,事实上底层是一个hashTable
sorted sets-->底层是一个skipList
有两种方式可以对缓存数据进行持久化
RDB
AOF
事件调度
发布订阅等
4、集成缓存
专指spring cache,spring cache自己继承了ehcache作为了缓存的实现类,我们也可以使用guava cache、memcached、redis自己来实现spring cache的底层。当然,spring cache可以根据实现类来将缓存存在本地还是存在远程机器上。
5、页面缓存
在使用jsp的时候,我们会将一些复杂的页面使用Oscache进行页面缓存,使用非常简单,就是几个标签的事儿;但是,现在一般的企业,前台都会使用velocity、freemaker这两种模板引擎,本身速度就已经很快了,页面缓存使用的也就很少了。
总结:
在实际生产中,我们通常会使用guava cache做本地缓存+redis做分布式缓存+spring cache就集成缓存(底层使用redis来实现)的形式
guava cache使用在更快的获取缓存数据,同时缓存的数据量并不大的情况
spring cache集成缓存是为了简单便捷的去使用缓存(以注解的方式即可),使用redis做其实现类是为了可以存更多的数据在机器上
redis缓存单独使用是为了弥补spring cache集成缓存的不灵活
就我个人而言,如果需要使用分布式缓存,那么首先redis是必选的,因为在实际开发中,我们会缓存各种各样的数据类型,在使用了redis的同时,memcached就完全可以舍弃了,但是现在还有很多公司在同时使用memcached和redis两种缓存。
‘贰’ 缓存服务器有哪些
通常来讲,只要你的服务器上的文件成功更新了的,那么就更新过了。
而你本机看到还是原来那样,最常见的是flash,却没有变化。
那么你就要用ie上的工具,然后选择internet选项,然后清除缓存和脱机文件。
再刷新你的页面,就正常了。
‘叁’ JAVA目前比较常用的缓存有哪些 集中式缓存与分布式缓存有何区别 它们应用场景是
java目前常用的缓存:
Generic
JCache (JSR-107) (EhCache 3, Hazelcast, Infinispan, etc)
EhCache 2.x
Hazelcast
Infinispan
Couchbase
Redis
Caffeine
Guava (deprecated)
Simple
建议使用spring boot集成方式,可插拔,简单。
集中式缓存适用场景:
1、服务器集群部署。
2、数据高一致性(任何数据变化都能及时的被查询到)
分布式缓存适用场景:
系统需要缓存的数据量大
对数据的可用性较高的情况
需要横向扩展,从而达到缓存的容量无限的要求
‘肆’ php常用缓存有哪些,说一下你了解到的缓存
一般存储一条或者几条信息就用自带的session
和cookia就可以搞定,如果要存储的内容多一些,比如一个列表或多个数据表的东西,就要用到mecache和redis
这两个缓存软件,其实这两个也属于数据库,用来存储搜索过后的信息!
‘伍’ 网站内容缓存是什么意思
一、什么是缓存
浏览器缓存这个概念,对于经常用浏览器来浏览信息的用户来说并不十分陌生。用户也许在用浏览器浏览信息时,经常使用“返回”和“后退”的浏览功能,调用你以前阅读过的页面,这时,你会发现显示速度是很快的,其实这些你刚调出来的内容就放在计算机的缓存中,而不需要再次从INTERNET上重新传输数据,这样就会给用户造成了一种访问速度被提高的错觉。所以浏览器缓存其实就是指在本地使用的计算机中开辟一个内存区,同时也开辟一个硬盘区作为数据传输的缓冲区,然后用这个缓冲区来暂时保存用户以前访问过的信息。既然缓存存在于硬盘之中,那么它肯定是以文件夹的形式出现的。各个不同类型的浏览器都有各个不同的文件夹作为缓存使用,在系统的缺省状态下,IE3.0和IE4.0版本的浏览器缓存文件夹为“WINDOWSTemporary Internet Files”,而网景公司的NETSCAPE 3.0浏览器的缓存文件夹为“Program FilesNetscapeNavigatorCache”,但网景公司的高版本浏览器比如NetscapeCommunicator4.0的浏览器缓存文件夹为“PROGRAM FILESUsers用户名cache” 中,其中用户名是用户登录WINDOWS时使用的名字。
二、缓存是如何工作的
当用户在浏览器中设置一定量的磁盘缓存后,浏览器上网工作时会把从网上读出的网页、图像以及其它数据存放在磁盘缓存之中,并建立相应的文档索引。在浏览器以后的工作中,将首先检查磁盘缓冲区中是否存在相应的数据,如果有,则直接从本地磁盘上读出,不再从网上下载,所节省的时间是显而易见的。缓存按照信息存放的位置可以分成内存缓存和硬盘缓存。内存缓存是用于暂时存储本次上网所调用的数据资料的,从INTERNET上传来的每一个网页信息,在内存缓存中都相应地给予保存一个备份,“返回”和“向前”实际上是将以前的页面从内存缓存中调出来并显示在用户的浏览器窗口中,在内存缓存中存放的网页信息量和内存缓存的大小有关,内存缓存越大,保存的网页信息量就越多。硬盘缓存是用于保存用户前几次上网时所调用的信息资料,用户从“历史记录”中调出来的内容其实就是保存在硬盘缓存中的,只要用户开辟的硬盘缓存足够大,将可以保存用户前几个星期甚至几个月前调用过的信息资料。
通过上面的分析,我们发现在浏览器中设置适当的磁盘缓存是相当必要的,并且需要一定的容量,理论上这个值设置得越高,存入缓存的信息就越多,装载它们的速度也就越快。那么是不是设置的缓存容量越大,浏览的效率越高呢?答案当然是否定的,大家都知道物极必反的道理。如果缓存容量设置的太小,所能存放的数据信息量就很小,大部分数据还是需要从网上重新下载,并且系统还要花费一定的系统资源来频繁清除缓存中的数据,最终结果会使浏览速度明显下降,如果这是这样的话,使用缓存到成了一种累赘,还不如不用的好。相反,如果浏览器的缓存设置得太大的话,那么在你的磁盘缓存中存放的数据信息量将很庞大,以后在你每次需要重新访问这些信息时,浏览器将不得不在你的庞大的缓存信息中搜索需要的文档,这样会使你的硬盘频繁工作,所需要的时间将长于从网上下载数据的时间;另外如果缓存容量设置得太大,在硬盘容量一定的情况下,其他系统程序占用的资源将变得相对较少,从而会降低计算机本身的运行速度。在这种情况下,磁盘缓存就失去了应有的作用。通常情况下,浏览器默认的内存缓存数值为600K,如果你的计算机有32~64M内存,并且在运行浏览器系统的时候没有执行更多的其他应用程序,那么可以把这个数值改为4~8M;对于硬盘缓存,浏览器默认的数值为5M,如果你经常要访问的信息量很大,而且计算机中的硬盘有比较多的闲置空间,那么你可以把硬盘缓存的数值设置成500M~1000M。
三、怎样正确设置缓存
用户无论使用的是哪一种浏览器,正确地设置浏览器的缓存参数将大大提高你的浏览效率,同时也将一定程度上改善你的浏览器的工作性能;但是如果使用不恰当,设置不正确那不但不会提高你的工作效率,反而还能降低计算机的运行速度。不同的浏览器有不同的设置方法:
A、IE4.0浏览器设置缓存大小的方法如下:
1、首先打开浏览器的操作窗口,然后用鼠标淡季“查看”菜单中的“Internet选项”,程序会打开一个选项对话框。
2、在选项对话框中找到“INTERNET 临时文件”栏,并用鼠标单击该栏右边的“设置”按钮,同样地程序也会打开一个设置框。
3、在设置框中,用户可以直接用鼠标来移动滑动杆即可改变缓存的大小。
4、参数设置好后,单击“应用”按钮使上述设置生效,最后单击“确定”按钮,退出参数设置对话框。
B、IE5.0浏览器设置缓存大小的方法如下:
1、打开IE5.0操作窗口,在窗口中用鼠标单击“工具”菜单中的“Internet选项”,屏幕上将出现“Internet选项”对话框。
2、在选项对话框中,单击“常规”标签下的“Internet临时文件”设置栏,并用鼠标单击该栏中的“设置”按钮,程序将会打开一个标题为“设置”的对话框;当然,IE4.0以上版本的浏览器带有自动清除磁盘缓存的功能,如果用户想在这里节省硬盘的空间,也可以按“删除文件”按钮,来释放出更多的缓存空间,这种删除缓存内容的方式比较彻底。
3、在“设置”对话框上面有四个单选项:
“每次访问此页时检查”单选项表示浏览器将发送一个信息给所要访问的页面的WEB服务器,查问当前访问的信息是否有变动,如没有变动,就从硬盘缓存中直接调用,而且每次访问都要发送信息给WEB服务器进行验证。
“每次启动INTERNETEXPLORER时检查”表示本次上网浏览器将只发送一次信息给WEB服务器进行验证,以后无论信息是否发生变动,都从硬盘缓存中直接调用所要访问的页面的信息。
“自动”单选项表示浏览器将自动检查所要访问的信息最新是否发生变动,如果变动的话,就从INTERNET上重新下载网页,如果没有变动的话,就直接从硬盘中读取数据。
“不检查”单选项表示对要调用的页面信息不进行校验,只要硬盘硬盘上有,就直接从硬盘中调用。弄清楚了上面四个选项后,用户可以根据自己的实际情况进行设定,浏览器默认选择“自动”这一单选项。
4、接着用户可以在“使用的磁盘空间处”用鼠标直接拖动滑动杆来改变缓存的大小,或者直接在后面的文本框中输入具体的数值。如果用户想改变浏览器缓存的位置,例如用户的C盘空间紧张时或者为了使用方便,用户需要把缓存移到其它分区或者把缓存放到一个易操作的地方,这时就可以通过另外选择一个文件夹来作为缓存,在这里用户只要按下“移动文件夹”并指定要新建的文件夹名称就行了。
5、同样地,参数设置好后,单击“应用”按钮使上述设置生效,最后单击“确定”按钮,退出选项对话框。
C、Netscape3.0浏览器设置缓存大小的方法如下:
1、运行浏览器程序,在浏览窗口中用鼠标单击“Options”菜单下面的“Network Preference”菜单项,浏览器将会弹出一个参数设置窗口。
2、在该窗口中单击“Cache”标签,我们就会发现该标签下提供的设置内容都是与缓存有关的,用户可以根据自己计算机的硬件配置情况,在“Memory”文本栏处输入适当的内存缓存的数值,在“Disk”文本栏处输入需要的硬盘缓存数值。
3、在该标签,用户也可以单击“Clear memory cache now”来直接清除内存缓存中的内容,通过单击“Clear disk cache now”按钮来清除硬盘缓存中的内容。
4、在“Disk cache”文本栏处用户可以另外指定一个文件夹作为硬盘缓存的目录,浏览器默认的缓存目录为“Program FilesNetscapeNavigatorCache”。
5、在“Verify”验证栏处有三个单选项,其中“Once per session”功能与“每次启动INTERNETEXPLORER时检查”相同,“Every time”作用与“每次访问此页时检查” 相同,“Never”当然与“不检查”相同,浏览器默认会选中“Once per session”选项。
6、设置好所有参数后,单击“确定”按钮完成设置任务。
D、Netscape4.0以上版本浏览器设置缓存大小的方法如下:
1、在浏览器操作窗口中,用鼠标单击菜单栏中的“EDIT”菜单项下面的“Preferences”命令,程序会弹出一个设置对话框。
2、在该对话框的目录栏中,选择“Advanced”下面的“Cache”命令,用户就会发现一个与缓存有关的设置界面。
3、这个设置界面与Netscape3.0浏览器的缓存设置界面相似,所以下面的设置基本上就与Netscape3.0浏览器设置缓存大小的方法相同。
好了,到了这里相信大家对浏览器缓存的使用已基本熟悉了。不过,最后笔者还要提醒大家两点的是:1、磁盘缓存如果使用不当或使用时间较长时,有时可以导致浏览器降低工作效率或干脆停止工作,最为典型的现象有两种:一是打开一个网页时硬盘不停的工作,需要很长的时间才有反应。这是因为缓存太长以及缓存中数据太多造成的。另外一种现象就是浏览器干脆不工作,无法打开任何网页。这是因为缓存中的数据文档混乱或者已经破坏造成的。解决此类问题的方法是适当减小缓存尺寸或者定期及时清理缓存中的数据。2、使用缓存后网页有可能不能自动更新,虽然在设置缓存时让它可以自动检测网页是否更新,但实际使用中往往每次都是读出的旧网页内容,这样网上内容更新时用户就不能及时了解。解决上述故障的方法是必须随时按下浏览器的“刷新”或“Reload”按钮。
‘陆’ 网站后台缓存 浏览器缓存 服务器缓存这三者有什么区别呢
网站后台缓存 是网站程序产生的一些临时文件,如PHP程序最喜欢。这个文件一般是在网站程序目录。
服务器缓存是服务器为了提升速度而产生的一些临时文件,如gzip的文件,一般是防在特定的目录。
浏览器缓存是用户本地浏览器缓存的网页文件,比如我们第一次打开一个网站速度会慢一些,第二次打开就很快,就是缓存在了本地。
‘柒’ 网站缓存功能什么意思
1.减少 HTTP 请求数:一个页面中包含的图片,JS,CSS等每一个资源都会生成一个 HTTP 下载请求,由浏览器发向网站服务器,如果减少这个请求数,会缩短网络传输的时间。
另外图片尽量采用压缩格式的,例如 jpg 就属于一种压缩图片格式,bmp属于无压缩无失真图片。这个需要网页/网站设计人员综合考虑这个因素。
优点:缩短网络传输事件,网络传输量小,减少服务器端负载;
缺点:减少HTTP请求,有时候无法满足网站发布信息的需求,盗链的出现也会增加HTTP请求;
2、采用缓存技术(webcache):这个是目前网站加速最主要的方式。如果利用代理/缓存加速服务器去实现的话,网站在不需要做任何改动的情况下,就可实现大跨度的实现加速效果。实现的基本方式为:将指定的网站页面周期性的缓存起来,缓存时间可从几秒到几天,在缓存时间内,页面只需要生成一次,以后有用户访问这个页面的时候,网站服务器和数据库就不再需要重新生成相同的页面了,极大的减少了网站服务器和数据库负荷。我们做个简单的对比,假设一个新闻热点页面,在一个小时可被访问1万次,如果这个新闻页面每次被访问的时候,都会通过读取数据库后再一遍一遍的编译生成,在一个小时内将会重复性的生成1万次;如果这个页面被周期性的缓存10分钟,也就是每间隔10分钟才会被生成一次,一个小时内只会被生成6次,如果两种方式一对比,效果就超级明显,两种比较下服务器负荷的压力比差别1000倍以上,缓存技术将使得网站负载在高峰期游刃有余。Fikker网站加速软件实际上是一款代理服务器软件,通过Fikker网站加速服务器提供的页面缓存(webcache)功能,将需要缓存的网站URL配置到页面缓存中(支持正则表达式,通配符和精确地址匹配),并设定一定的缓存时间(几秒到几天),不需要重启Fikker立即生效,如果有重要页面变动,可通过清理缓存将指定的缓存页面清理出去。
优点:网站不需要做任何改动,大幅减少服务器和数据库的负荷。
3、使用gzip压缩:页面压缩主要是降低传输尺寸,提高传输效率。常用的 html,asp,php,jsp,txt,css,js等文本页面,通过gzip压缩可降低75%左右尺寸,也就是原来需要传输 100KB 的页面,gzip压缩后只需要 25KB 的传输数据了,加速的效果是非常明显的。Fikker内置了gzip模块,自动对压缩的文件压面进行压缩传输。
4、使用非阻塞网络技术(non-block):提高网络响应速度,Linux 从 2.6 内核开始,专门引入 epoll 事件机制,相对于传统的 select 事件机制,效率大大的增强,尤其在高并发情况下越发的明显,几个线程即可并发支持上万并发连接,使用尽量少的线程除了减少内存开支还可减少频繁的线程切换的开销。Fikker软件的Linux版本全面支持epoll事件机制,支持从连接建立到连接结束,从域名解析开始到结束的全非阻塞网络设计。
5、提高带宽,加速页面传输:利用带宽加速方式常用是CDN,通过CDN运营商的网络将页面分发出去,用户访问时可就从最近的节点获取,达到加速目的。但这里面有一个前提,就是需要页面是静态的,或动态页面首先需要被生成出来,然后才能利用 CDN 的高速网络传输出去,从这个角度理解,CDN 与 缓存加速具有很强的互补性,即利用缓存技术加快页面生成,利用CDN加快传输,缺一不可。
希望对你有事帮助。
‘捌’ php中 常用的缓存技术有哪些
一般存储一条或者几条信息就用自带的SESSION 和COOKIA就可以搞定,如果要存储的内容多一些,比如一个列表或多个数据表的东西,就要用到mecache和redis 这两个缓存软件,其实这两个也属于数据库,用来存储搜索过后的信息!
‘玖’ ASP.NET缓存常见的4种方式有哪些
1、分布式缓存Memcached
2、内存缓存,此占用服务器资源
3、XML缓存,这种最为常见
4、DATATABLE缓存
‘拾’ 什么是网站缓存就是产生html页面吗
转自:http://www.fovweb.com
这是一篇知识性的文档,主要目的是为了让Web缓存相关概念更容易被开发者理解并应用于实际的应用环境中。为了简要起见,某些实现方面的细节被简化或省略了。如果你更关心细节实现则完全不必耐心看完本文,后面参考文档和更多深入阅读部分可能是你更需要的内容。
什么是Web缓存,为什么要使用它?
缓存的类型:
浏览器缓存;
代理服务器缓存;
Web缓存无害吗?为什么要鼓励缓存?
Web缓存如何工作:
如何控制(控制不)缓存:
HTML Meta标签 vs. HTTP头信息;
Pragma HTTP头信息(为什么不起作用);
使用Expires(过期时间)HTTP头信息控制保鲜期;
Cache-Control(缓存控制) HTTP头信息;
校验参数和校验;
创建利于缓存网站的窍门;
编写利于缓存的脚本;
常见问题解答;
缓存机制的实现:Web服务器端配置;
缓存机制的实现:服务器端脚本;
参考文档和深入阅读;
关于本文档;
什么是Web缓存,为什么要使用它?Web缓存位于Web服务器之间(1个或多个,内容源服务器)和客户端之间(1个或多个):缓存会根据进来的请求保存输出内容的副本,例如html页面, 图片,文件(统称为副本),然后,当下一个请求来到的时候:如果是相同的URL,缓存直接使用副本响应访问请求,而不是向源服务器再次发送请求。
使用缓存主要有2大理由:
减少相应延迟:因为请求从缓存服务器(离客户端更近)而不是源服务器被相应,这个过程耗时更少,让web服务器看上去相应更快;
减少网络带宽消耗:当副本被重用时会减低客户端的带宽消耗;客户可以节省带宽费用,控制带宽的需求的增长并更易于管理。
缓存的类型浏览器缓存对于新一代的Web浏览器来说(例如:IE,Firefox):一般都能在设置对话框中发现关于缓存的设置,通过在你的电脑上僻处一块硬盘空间用于存储你已经看过的网站的副本。浏览器缓存根据非常简单的规则进行工作:在同一个会话过程中(在当前浏览器没有被关闭之前)会检查一次并确定缓存的副本足够新。这个缓存对于用户点击“后退”或者点击刚访问过的链接特别有用,如果你浏览过程中访问到同一个图片,这些图片可以从浏览器缓存中调出而即时显现。
代理服务器缓存Web代理服务器使用同样的缓存原理,只是规模更大。代理服务器群为成百上千用户服务使用同样的机制;大公司和ISP经常在他们的防火墙上架设代理缓存或者单独的缓存设备;
由于带路服务器缓存并非客户端或者源服务器的一部分,而是位于原网络之外,请求必须路由到他们才能起作用。一个方法是手工设置你的浏览器:告诉浏览器使用那个代理,另外一个是通过中间服务器:这个中间服务器处理所有的web请求,并将请求转发到后台网络,而用户不必配置代理,甚至不必知道代理的存在;
代理服务器缓存:是一个共享缓存,不只为一个用户服务,经常为大量用户使用,因此在减少相应时间和带宽使用方面很有效:因为同一个副本会被重用多次。
网关缓存也被称为反向代理缓存或间接代理缓存,网关缓存也是一个中间服务器,和内网管理员部署缓存用于节省带宽不同:网关缓存一般是网站管理员自己部署:让他们的网站更容易扩展并获得更好的性能;
请求有几种方法被路由到网关缓存服务器上:其中典型的是让用一台或多台负载均衡服务器从客户端看上去是源服务器;