蜗牛历险记(二) Web框架(下)

Web框架第三篇--缓存篇

缓存的优劣很大程度上决定了框架的效率,一个有节操的缓存它应该是高效的,利用率高的,具备更多扩展功能的。



一、介绍之前

计算机各个硬件的运行效率是不一样的,CPU>>一级缓存>>二级缓存>>内存>>硬盘。如何提供CPU、一级缓存、二级缓存的使用率是操作系统的课题。我们需要做的就是如何提高内存使用效率,减少磁盘IO。

目前我们熟知的跟缓存有关的产品:.Net Mvc的CacheManager,Redis,Memcached

二、使用范围

缓存的作用就是将频繁需要的数据从原先存储效率相对低的磁盘存放到存储效率高的内存中,由于磁盘相对廉价而内存相对昂贵,我们对存放进入内存的数据也应该是有取舍的。按我个人理解来说,我觉得符合以下规则的可以考虑放入缓存中:

1.数据使用频繁的

2.改变较少,查询较多的

3.数据量总体不是很大的

总体而言,缓存不应该多度占用系统正常运行所需资源,尽量提高缓存命中率,降低缓存高频更改。

三、初始化

同样的,为了解耦与具体缓存框架的关系,我们需要自己订立一套标准的缓存接口

public interface IMemoryCacheManager {
        /// <summary>
        /// 从缓存块获取缓存项
        /// </summary>
        /// <typeparam name="TKey">关联缓存的类型</typeparam>
        /// <typeparam name="TResult">存储的缓存项类型</typeparam>
        /// <param name="key">与缓存项关联的键值</param>
        /// <param name="acquire">获取配置</param>
        /// <returns></returns>
        TResult Get<TKey, TResult>(TKey key, Func<AcquireContext<TKey>, TResult> acquire);

        /// <summary>
        /// 获取缓存块
        /// </summary>
        /// <typeparam name="TKey">关联缓存的类型</typeparam>
        /// <typeparam name="TResult">存储的缓存项类型</typeparam>
        /// <returns></returns>
        ICache<TKey, TResult> GetCache<TKey, TResult>();
    }

acquire的委托就是当缓存中不存在key时,通过执行acquire,将结果存入缓存,同时可以在AcquireContext<TKey>入参中设置缓存失效参数(比如失效时间、失效触发文本等会)。

目前基于这个接口,我实现了纯内存式的缓存接口和基于Redis缓存的缓存接口。

四、总结

Web框架的总结基本结束了。之后可能会针对某一个技术进行重点详细地分析。目前计划下一步介绍具体业务应用的设计和实现。

时间: 2024-12-18 07:24:35

蜗牛历险记(二) Web框架(下)的相关文章

蜗牛历险记(二) Web框架(中)

上篇简单介绍了框架所使用的Autofac,采用Autofac提供的Ioc管理整个Web项目中所有对象的生命周期,实现框架面向接口编程.接下来介绍框架的日志系统. 一.介绍之前 框架日志是否有存在的必要性?假如你认为你的框架永远不会出现Bug,或者你能根据错误提示就能还原现场,重现这个问题,那你不需要日志.目前看来这样的项目不存在(Helloworld之类除外).因此日志框架还是很必要的. 日志框架用于记录:系统运行过程中错误详情:用于记录系统使用过程中产生的意外情况:用于记录系统一些状态信息等等

蜗牛历险记(二) Web框架(上)

接上篇所说,本篇主要内容是讲述如何使用Autofac来管理整个平台的生命周期(初级). 一.简述 插件式Web开发的同学应该还会记得PreApplicationStartMethod这个Assembly级别的Attribute,它可以在应用程序启动之初(Web启动之前)启动,一般我们用它来做一些插件资源拷贝.插件动态加载的工作. [assembly: PreApplicationStartMethod(typeof(PreApplicationInit), "InitializePlugins&

web框架本质和简单的web框架

目录 二. web框架的本质: 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 二. web框架的本质: 一 web框架的本质及自定义web框架 所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响应,按照http协议的请求协议发送请求,服务端按照http协议的响应协议来响应请求,这样的网络通信,就可以自己实现Web框架了. html文件内容如下,名称为test.h

Python之Web框架Django

Python之Web框架: Django 一.  Web框架的本质: 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. 1 #!/usr/bin/env python 2 #coding:utf-8 3 4 #web框架的基础结构,几乎所有开发者都是基于此基础结果进行扩展. 5 6 import socket 7 8 def handle_request(client): 9 buf = client.recv(1024) 10 clien

Django【一】web框架的本质

HTTP协议 所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响应,按照http协议的请求协议发送请求,服务端按照http协议的响应协议来响应请求,这样的网络通信,我们就可以自己实现Web框架了. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <

Python开发【第二十二篇】:Web框架之Django【进阶】

Python开发[第二十二篇]:Web框架之Django[进阶] 猛击这里:http://www.cnblogs.com/wupeiqi/articles/5246483.html 博客园 首页 新随笔 联系 订阅 管理 随笔-124  文章-127  评论-205 Python之路[第十七篇]:Django[进阶篇 ] Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻

OpenWRT下web框架初尝试之总结

OpenWRT下web总结 目  录 目  录 1 第一章 Web框架以及实现 2 第一节 luci框架 2 第二节 controller下文件(*.lua)的编写 2 第三节 model下文件(*.lua)编写 3 第四节 view下文件(*.htm)编写 4 第二章 web的访问流程 5 第三章 lua学习资料 6 参考资料 7 第一章 Web框架以及实现 第一节 luci框架 OpenWRT的web采用的是luci框架,该框架采用了MVC的设计模式.在luci目录下有三个重要的目录:con

SSM——WEB环境下搭建框架(总结)

SSM--WEB环境下搭建框架(总结) (步骤跟随程序执行顺序) 一.web应用开始运行,首先进入web.xml中,执行spring环境搭建工作 1 <!-- 配置spring环境 --> 2 <context-param> 3 <param-name>contextConfigLocation</param-name> 4 <param-value>classpath:applicationContext.xml</param-value

Tomcat服务器本地的搭建,以及在 IDEA软件下的配置,以及项目的测试运行(基于supermvc框架下的web)

一.声明 使用了基于springmvc的supermvc的web框架.实习公司的框架. 二.tomact的下载与安装 1选择适合自己电脑配置的jdk和jre版本(截图来自tomcat的官方网站http://tomcat.apache.org/whichversion.html) 我的电脑是jAVA版本是8,所以我可以选择任意版本的Apache Tomcat version. PS:如果你问我,java版本怎么看.(ー?ー|||)(1)在命令行中输入java -version (2)在高级系统设置