关于中大型开发b/s开发中的缓存(cache),我的一些看法,有不正确的或者是有笔误的地方,请指正。thanks
首先,应该了解基本的,对于缓存的知识:
Q:如:静态缓存和动态缓存的区别?缓存是什么?
A:缓存,在某个方面简单的说,就是无需与数据库再次交互
静态缓存: 即所说的html,shtml文件。
动态缓存:即所说的把缓存存于服务器的内存中,需要时调用。
他们的区别在哪呢--
静态缓存不用占用负载(服务器的内存),但需要占用服务器的空间(因为生成很多文件),最重要的,是因为生成了静态的缓存,而不利于维护,因为当你设计一个系统的时候,你必须考虑到用这个的后果,应该就像设计模式中所说的,有的模式是灵活的,而有的模式是一开始布署的时候就不变了的。
因此,重申一次,设计时需要小心。考虑尽可能多的东西,如:系统升级后,是否还适用(尽可能的想),是否有利于更换模板,为一些页面添加特殊的或特定的代码,用shtml还是html?等等。
而动态的cache,我想大家都应该知道动网“边城浪子”写的用application做为cache的class了,这是asp中比较经典的用动态cache的例子。因此我也不用说太多过于application的cache了。他的优点就在于,较静态的cache利于维护和升级。以下是静态缓存与动态缓存示意图
A: 何时使用静态缓存和动态缓存呢?
Q:这个要看具体,你是如何布署服务器,以及,你是怎么样设计你的程序与代码的
举个例子:
我的服务器负载量够大,无需考虑内存这里问题,那么你可以较多的使用动态的cache,如新闻的索引页、首页、更多的索引页。而不必再生成静态的。如动易以前的版本(现在的版本我是很清楚,现在的好像是采用了静态的缓存)广泛采用动态的缓存技术。因此在后台更新时,需要手动更新cache,当然这里就可以采用URL rewrite了,更利于Search Engine的收录。提醒一句,这一点也蛮重要的,也是提醒很多的个人架设服务器的朋友,Search Engine并不是非常的友好的
(通常Search Engine的robot在收录的网站的过程中。会一直在爬你的网站,因此,做一个流量访问的系统还是很有必要的,记得cnblog(博客园)的dodo在检测中发现yahoo的robot每分钟爬的次数是google的几倍,这对你的网站速度是某个方面是有影响的,有的时候还很大)
而静态的缓存呢,上面也说到了,不利于维护。但广泛采用的MVC开发方式,把页面与程序很好的分离开来的话,是可以更快的提高,如我下面的图所示。
Q: 还有其它的方式来布署吗?
A: 有。如下所示。采用Proxy的技术来设计,通过代码获得静态cache是否可用,如果可用的话,如果不可用(这里所说的不可用,即是cache不存在,或者已经改动过cache了),则重新生成输出,否则的话,直接输出。
采用动态cache和静态cache的完整示意图,用消息通讯。简单的说明了如何应用cache的布署和应用。当然可以不用Cache Proxy来判断的,去掉cacheproxy也是一样的。
分享到:
相关推荐
最初为了加速 LiveJournal 访问速度而开发的,后来被很多大型的网站采用。起初作者编写它可能是为了提高动态网页应用,为了减轻数据库检索的压力,来做的这个缓存系统。它的缓存是一种分布式的,也就是可以允许不同...
以Android手机应用程序开发(采用Android SDK 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计能力提供了很大的帮助。 全书共分11章,主要以范例集的方式来...
以Android手机应用程序开发(采用Android SDK 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计能力提供了很大的帮助。 全书共分11章,主要以范例集的方式来...
以Android手机应用程序开发(采用Android SDK 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计能力提供了很大的帮助。 全书共分11章,主要以范例集的方式来...
以Android手机应用程序开发(采用Android SDK 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计能力提供了很大的帮助。 全书共分11章,主要以范例集的方式来...
2.3.1 struts 2应用开发环境的搭建 62 2.3.2 struts 2应用基本开发步骤—搭建eportal应用 69 2.3.3 struts 2中集成fckeditor 80 2.3.4 struts 2中集成displaytag 83 2.4 struts 2国际化实现 85 2.4.1 web应用的...
2. 从目的、技术途径、组成、分工方式、工作方式等5个方面对同构型多处理机和异构型多处理机做一比较(列表)。 二、(60分)现有如下表达式: Y = a × X 其中:X和Y是两个有64个元素的32位的整数的向量,a为32...
� 由于采用了 Java 作为应用开发语言,目前可用的传统第三方应用还很少,但由于 Android 是一款完全 开 源的移动计算平台,相信第三方应用会很快的丰富起来。 � Google 提供了一套 Java 核心包 (J2SE 5,J2SE 6) 的...
assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为...
.NET 2.0 泛型在实际开发中的一次小应用 C#2.0 Singleton 的实现 .Net Framwork 强类型设计实践 通过反射调用類的方法,屬性,字段,索引器(2種方法) ASP.NET: State Server Gems 完整的动态加载/卸载程序集的解决方案 ...
余志龙,来自于手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及J2EE、JSP、Servlet、JavaBeans、PHP、C#等程序语言,熟悉面向对象技术与Eclipse...
采用的案例均来源于作者实际开发工作,具有很好的实用价值,可以帮助读者在开发中进行参考或直接应用。 第1篇 开发基础 1 第1章 数字音视频开发技术基础 3 1.1 数字音视频基本概念 4 1.1.1 数字音频技术基础 4 ...
采用的案例均来源于作者实际开发工作,具有很好的实用价值,可以帮助读者在开发中进行参考或直接应用。 第1篇 开发基础 1 第1章 数字音视频开发技术基础 3 1.1 数字音视频基本概念 4 1.1.1 数字音频技术基础 4 1.1.2...
采用的案例均来源于作者实际开发工作,具有很好的实用价值,可以帮助读者在开发中进行参考或直接应用。 第1篇 开发基础 1 第1章 数字音视频开发技术基础 3 1.1 数字音视频基本概念 4 1.1.1 数字音频技术基础 4 1.1.2...
采用的案例均来源于作者实际开发工作,具有很好的实用价值,可以帮助读者在开发中进行参考或直接应用。 第1篇 开发基础 1 第1章 数字音视频开发技术基础 3 1.1 数字音视频基本概念 4 1.1.1 数字音频技术基础 4 1.1.2...
A、文件占用的空间变大 B、发生异常蜂鸣声 C、屏幕显示异常图形 D、机内的电扇不转 2. Windows98支持下面___C__网络协议。 A、Net BEUI B、IPX/SPX C、TCP/IP D、Banyan VINES 3.为了方便人们记忆;阅读和编程,...
assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为...
采用的案例均来源于作者实际开发工作,具有很好的实用价值,可以帮助读者在开发中进行参考或直接应用。 第1篇 开发基础 1 第1章 数字音视频开发技术基础 3 1.1 数字音视频基本概念 4 1.1.1 数字音频技术基础 4 1.1.2...
采用的案例均来源于作者实际开发工作,具有很好的实用价值,可以帮助读者在开发中进行参考或直接应用。 第1篇 开发基础 1 第1章 数字音视频开发技术基础 3 1.1 数字音视频基本概念 4 1.1.1 数字音频技术基础 4 ...