krissell/laravel-translation-json-cache

缓存翻译JSON文件以加快访问速度。

v2.0.0 2019-10-10 08:50 UTC

This package is auto-updated.

Last update: 2024-09-23 23:47:32 UTC


README

当使用翻译的.json选项时,每次请求都会读取并解析json文件。本包提供了一个 artisan 命令来将解析的数据缓存为php文件,几乎与路由和配置的缓存方式相同。这提高了性能,因为无需进行JSON解析,并且可以使用opcache。实际的性能提升取决于翻译文件的大小和磁盘速度,请见下文。

安装

composer require krisell/laravel-translation-json-cache

该包会自动注册。

用法

要缓存所有翻译JSON文件(在resources/lang中),运行以下 artisan 命令

php artisan translation-json:cache

如果您的json文件发生变化,您需要再次运行此命令以使更改生效。

您还可以使用以下命令清除缓存文件

php artisan translation-json:clear

部署时运行translation-json:cache,就像运行route:cacheconfig:cache一样。

缓存文件存储在bootstrap/cache目录中,命名为translation-{$locale}.php

性能提升

在2018年Macbook Pro(2.6 GHz i7)上,使用Laravel Valet,并有一个包含1500个字符串的JSON翻译文件(长度不同的真实字符串),请求期间第一次调用__("A")大约需要1.2 ms。启用此包后,相同的调用需要0.08 ms,即实际性能提升约为1 ms,考虑到简单的完整请求可能只需10 ms,这是一个很大的提升。

我已经在生产环境中使用这个解决方案了一段时间(每种语言的1500个字符串),我必须说,性能提升在那里并不明显(比较CPU图表,这当然也取决于许多其他变化)。由于我们的服务器配置使用docker和全内存磁盘,差异可能更小。请随时在其他人或不同大小的JSON文件下提供额外的测量结果。

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件

未来工作

我意识到JSON选项可能不是首选的,大多数人已经使用php文件以分层方式存储其翻译数据。在这种情况下,类似的策略仍然可能在解析和遍历上节省时间,但这超出了此包的范围。您可以自由地在新的包中进一步研究这个想法!