在我的应用程序中,我们有多语言语言字符串存储在自定义表格中,因为用户可以通过UI编辑,删除,导入新语言等...
目前,我所做的是在每个请求的开头。我将离开并获取当前所选语言的所有语言字符串(从我们的数据库中)并将其粘贴在字典中。
然后我有一个Html Helper扩展方法,我在razor视图中使用(见下文),它在我在请求开始时得到的字典中捕获,根据帮助程序中提供的密钥提取正确的语言
Html.LanguageString("MyLanguage.KeyHere")
现在这很好用。但是,随着应用程序越来越大。我们正在获得越来越多的语言字符串。它现在不是问题,因为它仍然非常快,因为只有大约200个字符串可以获得。
但这也意味着我得到了所有这些,即使一个页面上有一个说明了。理想情况下,我喜欢一种处理LanguageString("")的方法,然后进行查询以获取请求开头所需的那些内容?或者也许我自己的基于linq的语言可以被处理并产生更有效的呼叫。
我正在寻找有关如何做到这一点的建议。因为我希望应用程序尽可能高效。任何建议,帮助,提示都很受欢迎。感谢。
答案 0 :(得分:0)
我建议在应用程序的基础上缓存语言字符串,而不是为每个请求获取它们。例如,这可以通过维护静态字典并仅在用户对这些字符串进行更改时使缓存无效来完成。这将使您的应用程序更具响应性,并使您无法实现(imho)相当复杂且不一定有效的按需加载此数据的技术。
作为附注,我要补充以下内容:在出现这些问题时解决这些问题通常是一种很好的做法(而不是修复那些没有破坏的问题)并专注于更重要的事情。我完全同意必须始终考虑给定解决方案的性能影响,我只是说过早优化并不总是一个好主意。