robbin:
1、对象缓存
JavaEye上面关于对象缓存的讨论很多,我们也提供了JavaEye这方面很多数据,因此不展开了。RoR可以使用两个对象缓存,一个是CachedModel,类似Hibernate,比较简单,
对Model的CRUD操作自动进行缓存;另外一个是cache_fu,需要自己编码来添加对象缓存,但提供了更多高级机制,目前我们使用的是cache_fu。在使用对象缓存的情况下,应该把查询方法的:include去掉,避免关联查询无法利用缓存的现象。
2、查询缓存
对于统计类耗时查询,如果不要求实时性,那么可以使用memcache-client将查询结果缓存到memcached里面,例如博客排行榜之类。
3、页面局部缓存
对象缓存和查询缓存都是降低数据库访问负载的,但如果RoR的负载很高,那么只能依靠页面局部缓存了。传统的互联网web1.0网站很流行采用动态页面静态化技术来提高网站的负载,但是对于web2.0网站来说,每个页面都带有登陆用户的个人信息,页面的很多部分需要实时更新,例如投票,点击统计,digg,显示用户在线状态等等,动态页面静态化非常困难。当然如果你非要采用动态页面静态化,技术上也不是实现不了,可以通过AJAX请求来处理静态页面的动态部分,但是这种解决方案的开发成本过高,而且性能未必会有明显的改善,大家看看新浪和搜狐博客就知道这种技术被应用的有多糟糕了。
web2.0网站比较常用使用页面局部缓存,一种情况是页面不需要实时更新的,那么只需要设置一个合理的过期时间就行了,这种情况我们目前使用的比较多;另外一种情况是虽然不需要实时更新,但是会在用户执行某些操作后需要缓存过期,比方说博客个人主页的很多页面,这种情况下缓存过期策略会比较复杂,考虑到合理的开发成本,我们尚未对这样的页面使用局部缓存。
此外,Rails的页面局部缓存有一个缺点,就是和页面查询结果对应的Action当中的查询语句要放在View里面,否则每次action里面的查询还是会被执行,但是这样做会破坏程序代码良好的MVC结构。这种情况下,也可以采用另外一个Cache插件: better rails caching,在缓存页面的同时可以缓存Action当中的查询语句。
分享到:
相关推荐
// 摘录自 MethodCacheInterceptor.invoke() String cacheKey = getCacheKey(targetName, methodName, arguments); Element element = cache.get(cacheKey); if (element != null) { // 从缓存中找到结果,返回 ...
以及(iii)在讨论规范的口头或书面通信中摘录规范的简短部分,只要这些摘录加起来不超过技术的整体重要部分。2)向第三方分发规范的实现。 Java缓存API允许缓存的定义和管理,包括缓存区域的创建和配置、键值对的...
本文主要从存储器和总线架构、嵌入式Flash接口以及存储器重映射等方面摘录STM32F4xxx参考手册的关键知识点。 首先,STM32F4xxx的存储器和总线架构具有高度灵活性。它包含64KB的CCM(内核耦合存储器)数据RAM,这种...
JSR-107,即JCache API,是一个旨在为Java程序提供与缓存系统交互的API规范。在Java社区中,分布式缓存对于提升系统的性能和可伸缩性起着至关重要的作用。然而,直到JSR-107标准的出现之前,Java平台并没有一个完整...
计算机专业术语大全 chm,扩充你的电脑知识,成为计算机专业人士的必备专业用语,部分术语摘录: BIOS (Basic Input-Output System) -基本输入/输出系统 Bit-位、比特 BLP-底部引出塑封技术 Buffer-缓冲区 ...
#### 部分内容摘录: > 在当前数字化转型的大背景下,企业级应用面临着前所未有的挑战。用户对应用的响应速度、稳定性和可扩展性有着越来越高的期望。因此,如何有效地提升应用性能成为了每一个IT团队必须面对的问题...
【sman-snippets:sman的摘录】 `sman`,全称为`Smart ManPages`,是一个用于管理和浏览系统手册页的智能工具。它旨在提供一个更高效、更方便的方式来查询和使用Linux或Unix系统中的手册页。`sman snippets`则是一...
部分内容中的知识点说明:从摘录的内容中,我们可以得知该文档讨论了分布式网络中的缓存协议,并且这些协议特别适合于大型网络,如互联网。这些协议能够通过局部控制、有效利用现有资源并且在网络扩展时仍然能优雅地...
7. **性能优化**:对于大型音乐库,可以使用缓存技术(如Memcached或Redis)提高数据访问速度。此外,通过流式传输音频文件,可以减少服务器负载和用户等待时间。 8. **响应式设计**:为了让网站在不同设备上都能...
然后,您需要在缓存中下载模型: $ gutenhaiku setup 用法 $ gutenhaiku -f frankenstein.txt -a ' mary shelley ' -t ' frankenstein ' -d ' 1818-01-01 ' Wat ? Guten Haiku lets you extract haiku poems from ...
以下是从提供的代码片段中摘录的关键部分: ```objective-c @interface GRplistController : NSObject { NSURL *remoteURL; NSObject<GRplistControllerDelegate> *delegate; NetworkStatus remoteHostStatus; ...
根据提供的文件信息,可以看出这篇文档主要内容并非纯粹的技术性IT知识点,而是摘录自雷蒙德·卡佛的短篇小说集《当我们谈论爱情时我们在谈论什么》中的一段文字。该文档通过引用该作品中的内容,探讨了关于爱情的...
ROM和RAM是两种类型的存储器,ROM在断电后仍能保持数据,而RAM(如DRAM和SRAM)在断电后会丢失数据,其中SRAM常用于制造高速缓存,SDRAM则是标准的PC内存配置。 在硬件方面,CPU(中央处理器)是计算机的核心,负责...
Django还包含了身份验证、表单处理、缓存管理等高级功能,使Web开发变得更加便捷和高效。此外,Django遵循DRY(Don't Repeat Yourself)原则,鼓励代码重用,减少冗余。 总结来说,Django是一个强大的Python Web...
以下是从给定文件中摘录的配置文件`application_memcached.xml`的一个示例: ```xml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="..."> <!-- 配置Memcached服务器列表 -->...
此外,课程可能还会指定其他阅读材料,如期刊论文、会议论文、其他书籍摘录和技术手册。 课程涵盖的主要部分包括: 1. 引言:介绍计算机体系结构的基本概念。 2. 定量分析原理和MIPS:探讨如何定量评估计算机性能,...
从提供的文件内容中可以看出,该文档可能是由计算机相关领域的考试真题或者是某个技术领域的内容摘录组成。以下将尝试将提供的内容转化为知识点,尽可能地解释并拓展每个知识点。 1. 缓存(Cache) 缓存是计算机...
算法的分析是评估算法性能的关键,包括时间复杂度分析、空间复杂度分析、缓存优化等。算法的优化是提高算法性能的关键,可以通过缓存优化、并行计算等方法来提高算法性能。 五、数据结构 数据结构是指数据的组织...
它采用了ARM920T处理器核心,并包含了一个MMU(内存管理单元)、AMBA总线、以及Harvard缓存架构,具有16K字节指令缓存和16K字节数据缓存,每条缓存线长度为8个字。这种设计使得S3C2440特别适合于成本和功耗敏感的...
尽管具体细节未在文件摘录中显示,但I/O的性能和架构特点很可能是练习题目讨论的内容之一。 10. 存储设备:文件中提及了各种存储设备,如SRAM(静态随机存取存储器)、DRAM(动态随机存取存储器)、ROM(只读存储器...