美文网首页琴梨梨的日常
一篇文章让你搞懂X-Cache的加速原理

一篇文章让你搞懂X-Cache的加速原理

作者: 琴梨梨 | 来源:发表于2017-08-22 21:28 被阅读726次

    最近琴梨梨给自己的大部分绿化单文件作品不仅加了数字签名,还加了这种被琴梨梨称为X-Cache的加速技术,现在琴梨梨就来讲讲这个X-Cache到底是怎么加速的

    X-Cache看上去不像是技术倒更像是一种思路。

    首先我们需要明白的是X-Cache所适用的场景,是单文件绿化版的软件/游戏。

    这样的单文件绿化后启动时电脑做了啥我们来看看。

    单文件绿化版实际上都是一个特殊的自解压文件

    以琴梨梨的AIDA64绿化版为例

    Step1读取自解压文件参数,我们通过压缩软件来查看自解压参数(后面括号内为琴梨梨手动添加的注释)

    ;下面的注释包含自解压脚本命令

    Overwrite=1(覆盖参数)

    PreExtract="KOTORILAUNCHER.exe";"LAUNCH.exe";"LAUNCHER.exe"(提前释放的文件,一般为启动界面)

    Presetup="LAUNCH.exe"(提前释放后提前运行的文件)

    Setup="aida64.exe"(释放完成后运行的文件)

    TempMode(释放到临时目录)

    Silent=1(静默模式

    Step2释放了一个启动界面并运行

    Step3逐渐释放所有文件

    Step4启动主程序

    Step5自解压进程在后台监视

    Step6用户结束软件,自解压进程清理缓存并退出

    而用户关闭不到五秒,想起还有操作没有完成

    于是又要重新来一遍6个步骤

    其中释放文件对硬盘的消耗很大,这也是绿化版软件启动慢的致命问题,在HDD上尤其突出

    那么既然用户可能不仅仅使用一次,而释放的文件都是相同的,为什么不先留着这些文件呢?这样下次启动时就不要完整释放,加快启动速度

    这就是X-Cache诞生的原因,让文件缓存留下来,同时又可以和正常的缓存一样随意删除不影响使用

    众所周知,Windows的缓存目录%temp%用于存放一次性的,使用后就可以删除的文件,而且系统也会自动清理,尤其到了win10加入了存储感知,清理更加频繁。而且作为绿化软件的缓存,不属于一次性内容,因此我们必须跳出缓存目录%temp%,再找个目录作为文件缓存

    这时候我们可以考虑这几个文件夹

    1,program files

    程序目录,优点是不会污染用户的眼睛,整齐。缺点是需要管理员权限写入,而且文件目录带空格,对于自解压文件来说不友好,而且还要对x86和x64机器做区分,比较麻烦。(想象一下,一个视频转换工具请求管理员权限还问你是x86还是x64,你觉得正常嘛?)

    这个目录适合本身就需要管理员权限启动并且本身仅仅适配x64的软件

    2,AppData

    数据目录,优点是随便写不用管权限,缺点是不支持多用户,而且自解压本身对于%username%这样的变量不友好,如果用户使用中文等非英文用户名,一部分程序会打不开,另外选择这个目录就是放弃XP用户。(虽然琴梨梨已经彻底放弃XP用户了)

    3,在别的盘根目录下建文件夹

    很多东西都这么干甚至包括某些巨硬的补丁,但是除了补丁等适配做的好的东西,其他大部分遇到只有一个盘的机器时就懵逼了。(软件内心:欸D盘哪去了)

    优点是整齐,便于用户管理,缺点是不适配主流的单分区用户。

    4,在系统盘根目录建文件夹

    其实系统盘根目录是不需要管理员权限就能写入的,在这里建文件夹不仅兼容性好而且也比较方便用户管理。琴梨梨选择的就是这个位置。

    那么选好了文件夹,接下来就要考虑用户可能不仅仅用一个绿化软件,而一个软件就建一个文件夹容易把根目录弄得很难看

    对于这个问题,琴梨梨的方案是建立一个大文件夹,里面按软件分子文件夹解决,这样还方便用户删除不需要的缓存

    接下来我们就要了解X-Cache和传统方式区别在哪里

    首次启动:和传统方式一样释放文件,只是释放到指定目录,同时退出时不删除文件

    第二次启动:检测到上次留下的文件,判断文件版本是否相符,相符则跳过,不相符则覆盖

    确定原理后我们接下来就可以操作了

    琴梨梨以一个打包后180M左右的游戏为例

    这是一个CAB自解压

    先解包运行一次

    发现游戏自动整理了文件

    值得一提的是对于这种首次启动会大幅度修改目录结构的软件/游戏,自己先运行一次再打包,否则X-Cache无法发挥最大优势

    再次运行确定这就是当前目录结构不会改变后,打包,推荐使用7z极限压缩节约空间

    得到这样一个压缩包,打开压缩包点击自解压(可以使用好压,winrar等支持生成带自定义自解压文件的压缩软件)

    和正常的制作过程一样,拆包拿图标并设置

    在“更新”标签页内分别选择解压并更新文件和覆盖所有文件

    设置解压路径为你制定的缓存目录,这里琴梨梨设置在C盘建立KOTORI_GameCache文件夹

    同时和传统方法一样设置解压后解压前和预释放文件

    在模式里选择全部隐藏,当然也可以隐藏启动对话框来显示进度,个人倾向选择全部隐藏来保证高配机器上的优质体验

    如果你的软件需要管理员权限,别忘了勾上请求管理员权限的勾(可能显示为管理员密码/UAC等字样)

    推荐先把资源管理器返回上层目录,否则高配机器可能会出现无法写入被占用的情况(资源管理器抢先一步占用)

    耐心等待处理完成

    最后给自解压文件套个upx壳节约空间

    接下来让我们来测试一下

    点击运行,可以看到开始大量写入

    在缓存文件夹内我们找到了释放出的文件

    游戏正常运行

    退出游戏,缓存保留

    再次启动,可以看到启动时只有cpu狂飙,不再有硬盘写入

    观察修改时间,确定的确没有修改文件

    现在我们随意删除缓存中的文件

    启动时这个文件又一次被释放

    缓存目录又找到了这个文件

    现在我们看看如果得到了新的绿化版本后会怎么样

    这是原来的配置文件

    对自解压内的配置文件动手脚并保存

    运行修改后的文件,没有全部覆盖

    打开缓存目录的配置文件,很明显已经变成了修改后的内容

    看修改时间确定是新的

    现在删光缓存目录

    再次启动运行正常

    缓存目录再次出现文件

    到这里你应该已经明白X-Cache的原理了吧,即创建一个非及时删除的缓存来加速载入,对于硬盘较慢用户加速明显

    而且X-Cache一点也不高高在上,借助压缩软件,小白也能轻轻松松做出来,所有琴梨梨才会说这更像是一种思路,一种让缓存留的久一些的思路

    点一下喜欢好不好嘛

    琴梨梨黑历史大全套

    支持云签到的贴吧云工具箱

    老APP也可以后台纯净!

    小巧好用的MD5校验工具

    就是有带背景截图这种操作!

    相关文章

      网友评论

        本文标题:一篇文章让你搞懂X-Cache的加速原理

        本文链接:https://www.haomeiwen.com/subject/rkhrdxtx.html