标题: [转贴]关于缓存机制
kenotic
版主
Rank: 2


UID 4
精华 1
积分 685
帖子 382
阅读权限 50
注册 2006-12-4
 
发表于 2006-12-4 11:06  资料  短消息  加为好友 
[转贴]关于缓存机制

作者:Miliardo

为了加速数据存取,Kirikiri内部使用了缓存机制。
AutoPath、图片、ks等资源都在缓存的范围内。
很可惜的,因为对于AVG来说文件名对应的文件一般是唯一的,所以这个缓存的机制为此进行了优化。

拥有一个高效的缓存机制本来应该是好的事情,为什么说很可惜呢?
这种优化造成的负面效果是,如果文件在运行期间改动的话,可能无法正常读取到新的文件……Orz

如果你用Storages.removeAutoPath删除了一个包的自动访问,也许你下次访问资源的时候还是会自动检索到那个包中。
因为Kirikiri优先检索缓存中的包片段信息,而不是当前系统的Autopath。

如果你读取了一边图片,然后在没有关闭Krkr的时候修改这幅图片。重新打开的时候你会发现现实的图片还是修改前的。

那么,怎么解决这个问题呢?
解决方法自然一定是存在的。
如果说缓存不能够手工清除,那么这个就不是不方便,而可以被判为Bug了。
Krkr的System类中,有一个用来压缩内存使用量,释放不需要的缓存的函数。这就是我们在外部文件修改了之后必须进行的操作。

下面是现场翻译的文档,from Kirikiri2 Doc(参考:TJS2 ドキュメント ):
------------------------------------------------------

System.doCompact

机能/意义
压缩内存使用量
类型
System类的方法
原型
doCompact(level=clAll)
参数
level:指定压缩等级
 指定clIdle的话,将进行和系统空闲的时候进行的内存整理同样的操作。即进行TJS内部的垃圾收集(GC)。
 指定clDeactivate的话,将进行和吉里吉里不是活动窗口的时候进行的内存整理一样的操作。现版本将清空层计算用的临时图像缓存、层缓存、xp3压缩包的片段缓存、自动检索路径的缓存。
 指定clMinimize 的话,将进行和吉里吉里最小化的时候进行的内存整理一样的操作。对于现版本,将清除图像缓存、文字描绘的缓存、
 指定clAll 的话,将执行上面的所有操作。
 内存压缩的层次按照clIdle
------------------------------------------------------

如同文档所说,因为通常吉里吉里会自动进行这类操作,所以一般不必要在这方面特别注意。但是吉里吉里并不是为了外部数据会经常被更改的情况设计的,所以遇到需要处理经常变化的数据的状况的话就可以使用这种“非常规”手段。





请勿在本站发布侵权物或含侵权素材的作品

Haunted Hovel

黑貓工房
顶部
咔莎
会员
Rank: 1
囧—魔兽世界脱宅中—囧



UID 13
精华 0
积分 521
帖子 432
阅读权限 5
注册 2006-12-18
来自 ~Celestial Gem~
 
发表于 2006-12-18 13:10  资料  主页 短消息  加为好友 
学习中……谢谢!

顶部
Arik
会员
Rank: 1



UID 81
精华 0
积分 19
帖子 8
阅读权限 5
注册 2007-2-23
 
发表于 2007-3-1 10:27  资料  短消息  加为好友  QQ
老实说,Kirikiri的大部分的命令代码我都不会用......OTZ......失败啊~~嗯,所以要继续学习。谢谢搂住了~~

顶部
 



清除 Cookies - 联系我们 - [Key Fans Club] the Council of Doujin-game Development and Promotion - Archiver - WAP
Powered by Discuz! 5.5.0 © 2001-2006 Comsenz Inc.
Processed in 0.022631 second(s), 9 queries , Gzip enabled
粤ICP备05060595号
[ 当前模板 - 天高云淡 v 设计制作 - 七星论坛 v 请使用1024*768或以上分辨率浏览本模板 ]
请勿删除或修改此处版权图示