【问题标题】:Zend_Locale_Format::toNumber very slow in Dutch localeZend_Locale_Format::toNumber 在荷兰语环境中非常慢
【发布时间】:2013-07-05 15:23:00
【问题描述】:

我有一个可以使用多种语言访问的网站,但我发现在不同语言环境下的页面加载时间有些奇怪。下面以其中一个更重要的页面的加载时间为例。

en_GB = 469ms
fr_BE = 545ms
nl_BE = 1.45s

我已经发现差异是由这段代码引起的:

    $format_number = Zend_Locale_Format::toNumber(
        $number,
        array( 'precision' => 2 , 'locale' => Zend_Registry::get( 'Zend_Locale' ) )
    );

如果我删除此代码并仅返回未格式化的数字,则所有 3 个语言环境大约会在同一时间呈现页面。 (+/- 500 毫秒) 我有很多数字需要在此页面上进行格式化,因此会产生严重影响。

我已经研究了很长时间,但找不到解决方案,甚至找不到解释。

有什么想法吗?

【问题讨论】:

    标签: zend-framework zend-locale


    【解决方案1】:

    您是在该页面上多次调用Zend_Registry::get('Zend_Locale'),还是只调用一次? 你说你在那个页面上有很多数字要格式化。 尝试在页面开头甚至在控制器中将注册表值设置为变量:

    $currLocale = Zend_Registry::get('Zend_Locale');
    

    如果您确实为相同的值多次调用Zend_Registry,那么您实际上是在一遍又一遍地做同样的事情。

    语言环境本身的内部运作方式之间也可能存在一些“更深层次”的差异。您使用的是基于UTF-8 的语言环境还是什么?这非常重要,因为某些语言环境可能包含比其他语言更多的符号。特定操作系统上的这组语言环境也可能存在特定的已知/未知问题。你在什么操作系统下运行它?

    【讨论】:

    • 是的,我不止一次调用 ::get 。我 :: 使用插件和预调度设置它。然后每当我需要它时,我就会调用它。在这种情况下,我需要在视图助手中使用它。所以每次调用 Zend_View_Helper_Numbers 时,都会调用 ::get。但是话说回来,这不正是 Zend_Registry 的原因吗?让数据在当时需要的所有不同类别中都可用?此外,在说 en_GB 然后在 nl_BE 中经常调用它们。我确实在使用 UTF-8
    【解决方案2】:

    我自己刚刚达到了这个性能指标,嗯.. 没有解决方法。 除了使用缓存,最好使用 APC 后端。基于文件的缓存对我没有帮助。 您可以尝试设置这个(在引导程序中的某处):

        $frontendOptions = array(
            'lifetime' => null,                   // no expiration
            'automatic_serialization' => false  // this is the default anyways
        );
    
        $backendOptions = array('cache_dir' => SITE_ROOT.'/cache');
    
        $cache = Zend_Cache::factory('Output','File',$frontendOptions,$backendOptions);
    
        Zend_Locale::setCache($cache);
    

    也许对你有帮助。

    对我来说,日期格式和数字格式在本地需要大约 3.5 秒。如果我禁用这些,获取页面大约需要一秒钟,否则:~4.5 秒(启用文件缓存和 SSD 硬盘驱动器)。

    附: Zend_Locale 缓存被重用于数字格式化和所有与 Locale 相关的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-03
      • 1970-01-01
      • 2018-04-08
      • 1970-01-01
      • 2020-02-08
      • 1970-01-01
      相关资源
      最近更新 更多