翻译缓存相关说明
为了使用户有更好的体验,我们在v2版本时便加入了两级缓存机制。 而在 v3.14 版本时,又增加了一层内存级缓存,支持三级缓存的能力,进一步提升瞬间翻译能力。
- 一级缓存-浏览器缓存,缓存于浏览器。 用户翻译过一次,那么浏览器就会进行缓存相应的翻译句子。当用户刷新页面时,将不会再从后端接口来取翻译结果,而是直接从浏览器本身的缓存中进行识别进行翻译。极大提高用户体验,使网页翻译无需在有缓冲等待。这层缓存是用的浏览器的 LocalStorage 进行的缓存,可以通过审核元素来查看相关缓存信息。
- 二级缓存-文件缓存:缓存于服务器。 翻译过一次的,都会在服务端进行缓存。下次当有翻译请求时,如果要翻译的内容跟要翻译的语种相同,那么将直接从服务端缓存返回响应,而不需要再通过第三方翻译平台来进行翻译,从而极大降低了在第三方翻译平台的翻译字数。
注意,当前缓存的方式,是一个翻译的API请求中所有的文本能完全匹配,才会走缓存。如果你网页是静态网页,翻译的文本本身并不会变,那就会走缓存。如果你网页中有动态文本,比如你的是论坛,会显示最新用户发帖跟最新评论,这个是每次打开网页时它都会变的,所以就会导致翻译时文本每次都是不同的,那这样就不会匹配到缓存,而是进入了第三方翻译接口进行翻译。当然这个翻译因为有了一级缓存的存在,浏览器本身就进行了识别,在请求过来的也只是这个有变化的文本,也就是上面所提的用户发帖跟最新评论,只是这些变动的,在浏览器一级缓存中并没有被翻译过的句子,才会经过第三方翻译接口进行翻译。实际翻译的字数也不多,只是那几句有变化的句子而已。
它的缓存方式是采用文件式缓存来进行存储,我们的开源免费版本用的也是这种缓存方式,它跟 HDD 磁盘进行结合,可以极大降低服务端成本。v2版本也是因此,在翻译速度方面提升了非常大。 - 三级缓存-内存缓存:缓存于服务器。 它采用的是内存级的缓存方案,它弥补了二级缓存(文件缓存)对于像论坛等动态内容缓存命中率低的不足,他会对每行翻译文本进行单独的缓存命中,而翻译之后也会对每行进行单独的缓存。这样极大提高了文件缓存没命中的情况下,再有内存缓存进行的每行文本的缓存命中。使真正使用机器翻译及大模型翻译的文本极少极少。我们所知大模型的计算效率、以及token数是花钱的,经过缓存后,可以极大的降低对大模型的使用消耗。
比如["你好","世界","我是智能翻译"]
这里有三个要进行翻译的,它在内存缓存中寻找,是"你好"
、"世界"
、"我是智能翻译"
分别进行了三次缓存寻找,比如"你好"
、"世界"
这两句缓存中都有,那么直接从缓存中取出翻译结果, 而"我是智能翻译"
缓存中没有,则只讲这一个交给机器翻译或者大模型去进行翻译,翻译之后再将"我是智能翻译"
的翻译结果存入内存缓存中以便后续使用。
注意,三级缓存(内存缓存)是直接占用内存的,而一般的服务器内存还是要稍微贵点的,所以开源版本本身是不支持内存缓存的,只有私有化部署的版本才可选择启用三级缓存,用内存来介入进行逐行缓存。