课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
缓存功能在软件开发项目中是许多程序员都在使用和添加的一个功能,下面我们就通过案例分析来了解一下,软件开发缓存应用与回收机制。
什么是缓存?
缓存是将请求的结果存储在与原始存储位置或临时存储位置不同的位置的过程,这样我们就可以避免重复执行相同的操作。基本上,缓存是文件和数据的临时存储,从这个新位置访问数据会更快。
例子
Web浏览器缓存HTML、CSS、JS和图像,以便在再次请求时更快的访问网站。
CDN存储静态文件,有助于减少延迟。
DNS用于获取查询的IP地址,查询结果可以存储在缓存中,因此当我们多次请求IP地址时,不必再次执行DNS查询,从而可以更快的访问网页。
使用NodeJS实现一个简单的缓存
让我们实现一个简单的缓存系统:
先,我们创建一个简单的服务器和一个数据库,通过数据库获取HTML页面,并使用服务器在本地托管页面。我们将创建两个访问端点,一个使用缓存,另一个不使用。
如果我们在服务器上的浏览器中查看没有缓存的访问端点,它将花费3秒加载(因为我们使用setTimeout在3秒内加载没有缓存的页面)。如果再次刷新页面,将再次花费3秒加载页面,因为每次刷新页面时,都会转到数据库获取。
在使用缓存的访问端点中,我们一次访问时,需要3秒来加载页面,因为缓存是空的,必须到数据库获取数据。但是,当我们刷新页面时,它会立即加载。当我们一次加载页面时,系统缓存了结果以备以后的请求。
回收机制(Evictionpolicy)
当缓存用完时,需要删除旧缓存项,从而可以缓存新内容。事实上,删除近少使用的对象是流行的方法之一,这个解决方案可以优化缓存中命中请求资源的概率。
随机替换(RR,RandomReplacement):正如其字面意思,我们可以随机删除一个条目。
少使用次数(LFU,Leastfrequentlyused):记录一个条目被请求的频率,并删除不频繁使用的条目。
近少使用(LRU,LeastRecentlyUsed):在LRU中,删除近使用次数少的条目。
先入先出(FIFO,FirstInFirstOut):FIFO算法保存对象加载到缓存中的顺序。如果缓存没有命中,从头部取出一个或多个对象,并将一个新的缓存对象插入到队尾。如果缓存命中,保持缓存不变。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。