缓存的一点想法

 

          现在的WEB应用越来越过,访问量越来越大。WEB开发中,经常会遇到访问的瓶劲,很多时候这种瓶劲来源于数据库。

          为什么数据库会产生瓶劲?其实你仔细想一下,web访问,请求一个页面,如果你的页面上有N个SQL语句,那么就需要到你的数据库中操作N次查询或者其它操作,这个过程中,其实是一个非常消耗CPU资源的过程。用MYSQL来举例,你要查询一条语句,你必须写一条SQL语句,然后进入MYSQL,MYSQL对SQL语句进行SQL解析,转化成它能读懂的方式,然后从数据中去查找需要的数据,然后再返回。这个过程,远比你写了几个常用的for循环来得消耗。所以我们就需要在特殊的地方用缓存来减少WEB对数据库的操作,提高访问速度和减轻服务器压力。

 

缓存方法:

  • 静态页面。静态页面是最节约资源的一种页面缓存方式。将你的文章内容生成HTML静态文件页面,保存在服务器上,外部访问的时候就是访问这个HTML静态文件。静态页面基本不需要PHP之类的语言解析和MYSQL操作,可以最大程度提高你的应用程序的效率。但是静态页面存在一个问题,并不是所有页面都能生成静态页面的,那些经常要变动数据,比如论坛的列表页面,这样的页面就无法采用静态页面的方法。

 

  • mysql缓存。有时候,一个页面需要多表去查询需要的数据,这个时候就可以采用mysql缓存。mysql缓存其实也是需要去读取一次数据库的,只不过本来你需要查询3张表,现在只需要查询1张表,而且查询这张表,索引之类的都设计好了,读取速度会非常快。

 

  • 文件缓存。文件缓存是现在用得最普遍的一种缓存,将数据库中的数据读取出来,保存在文件中。这样的方法可以让你减少数据库操作,需要这个数据,就可以从文件中读取,减小了数据库的压力。例如现在很多论坛程序,都使用了文件缓存,将一些基本的配置信息,参数等保存在文件中,本来一个页面需要读取5条SQL语句,现在文件缓存加上来了,可能只需要读取2条数据。文件缓存有一个缺点,如果你的数据变动频繁,IO操作是一个问题,如果多WEB部署的时候,用文件缓存的话,会出现共享问题。但是一般的网站或者应用,文件缓存足以。

 

  • 内存缓存。近些年,内存缓存崛起,主要在像新浪微博这样的高并发应用上,大量使用内存缓存。知名的内存缓存例如memcache,它具有速度快,分布式部署等优点,得到了大量用户的使用。内存缓存和文件缓存相比,在速度上要快很多,而且可以支持独立部署,分布式部署,在大型应用上,内存缓存占尽优势。但是内存缓存有一个问题,一台服务器如果电脑关机重启了,那么保存在这台电脑上的数据就会丢失。后来就有了一些保存在硬盘上的KV数据库,其实就是最简单的数据库。数据库发展到现在,又回到了最简单的模式,但是这种KV的模式,是靠谱的。

           总之,不管什么缓存,都是为了缓冲数据的读取资源消耗。当然要设计好缓存,也是PHP程序设计中的一个难题,如何让你的缓存像和读取数据一样不需要人为去监督,就需要好好设计一下了!

         我的InitPHP框架支持静态页面生成,mysql缓存,文件缓存,内存缓存,不同类型之间的缓存可以无缝切换。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值