在内存中存储 INI 文件
我正在编写一个应用程序,它使用 ini 文件来存储所有状态代码(错误、成功代码等)。一个非常简单的版本是这样的:
[success]
000=Status code not found.
[error]
000=Error code not found.
001=Username/Password not found.
我的 CF 组件使用以下代码:
component hint="Set of tools to interact with status codes."{
public function init(string codefile) any{
this.codefile = Arguments.codefile;
}
public function getCodeString(string type, string code) string{
var code = getProfileString(Variables.codefile, Arguments.type, Arguments.code);
return code;
}
}
我假设当我调用 getProfileString 是 Railo 打开文件、搜索键并返回值。因此,随着我的应用程序的增长并且我有更多的代码,我预计这个过程会减慢。那么有没有一种方法可以在 init 方法中打开文件并将其全部读入变量范围,然后从那里调用 getProfileString ?
I am writing an application that uses an ini file to store all status codes (errors, success codes, etc.) A very simple version is this:
[success]
000=Status code not found.
[error]
000=Error code not found.
001=Username/Password not found.
And my CF Component to work with that uses the following code:
component hint="Set of tools to interact with status codes."{
public function init(string codefile) any{
this.codefile = Arguments.codefile;
}
public function getCodeString(string type, string code) string{
var code = getProfileString(Variables.codefile, Arguments.type, Arguments.code);
return code;
}
}
What I assume happens when I call the getProfileString is that Railo opens the file, searches for the key and returns the value. So as my application grows and I have a lot more codes, I expect that this process will slow down. So is there a way that I can open the file in my init method and read it all into the variables scope, and call the getProfileString from there?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您想坚持使用 .ini 方法,您甚至可以在 onApplicationStart 中解析您的 ini 文件并将数据推送到应用程序范围,就像 @Sergii 推荐的 XML 文件一样。
做类似的事情:
还没有在 Railo 上测试过这个,但它至少应该在 ColdFusion 9 上工作
You can even parse your ini file in onApplicationStart and push the data into application scope like recommended for a XML file by @Sergii, if you want to stick with the .ini approach.
Do something like that:
haven't tested this on Railo, but it should work on ColdFusion 9 at least
因为您使用的是 Railo,所以可能有最简单的解决方案:将文件放入 RAM 文件系统。
因此文件的完整路径将类似于 ram:///some/path/to/config.ini 。
显然,您需要首先将文件写入 RAM,可能是在第一次请求时。
因此,组件的稍微修改版本可能如下所示:
请注意,我已将
init
this.codefile 更改为variables.codefile
>。无论如何,我也不确定 ini 文件是最方便且可维护的解决方案。无论如何,你每次都需要解析它,对吧?如果您需要文件配置,请使用XML。只需在
onApplicationStart
中解析它并将数据推送到应用程序范围即可。Because you are using Railo there's possibly easiest solution: put the file into the RAM filesystem.
So full path to the file will look like
ram:///some/path/to/config.ini
.Obviously, you need to write the file into the RAM first, possibly on first request.
So slightly modified version of the component may look this way:
Please note that I've changed
this.codefile
to thevariables.codefile
in theinit
.Any way, I'm also not sure ini file is the most handy and maintainable solution. You need to parse it each time any way, right? If you need a file config, use XML. Just parse it in
onApplicationStart
and push the data into the application scope.