大量定义url规则时,动态生成config的urlManager参数,这样做对效率有影响吗?

因为项目原因需要定义大量url规则:

/shanghai

/shanghai/page_xxx

/shanghai/show_xxx

/beijing

/beijing/page_xxx

/beijing/show_xxx

…(全国所有的省、市、县的拼音,数据量巨大)

/help

/contacts

/login

/logout

/reg

…(其它常规页面)


为避免出现海量url规则定义,我通过$_SERVER[‘REQUEST_URI’]确定当前url是否地区的拼音。

比如浏览器访问 http://domain/liaoning/page_2(辽宁),程序将动态生成config->components->urlManager参数的规则:

array(

    'urlFormat' => 'path', 


    'showScriptName' => false, 


    'appendParams' => false, 


    'rules' => array(


        '<city:liaoning>' => 'infomation/list',


        '<city:liaoning>/page_<page:\d+>' => 'infomation/list',


        '<city:liaoning>/show_<id:\d+>' => 'infomation/show'


    ));

如果当前url不是地区拼音,则生成常规页面的规则:

array(

    'urlFormat' => 'path', 


    'showScriptName' => false, 


    'appendParams' => false, 


    'rules' => array(


        'help' => 'site/help',


        'contacts' => 'site/contacts',


        'login' => 'user/login',


        'logout' => 'user/logout',


        'reg' => 'user/reg'


    ));

使用了一段时间貌似很完美,今天检查cache时赫然发现yii对urlManager进行了缓存。

也就是说访问不同的url,urlManager就会发生改变,即被yii重新缓存一次。如果网站并发量很高这个资源消耗还是不小的。

请问有什么办法可以解决一下?希望qiang和各位提供个思路。

顶一下,期待有朋友一起讨论

可否禁用urlManager的cache功能?

通过这种方式每次访问生成的url规则会很少,应该没必要cache…

继续up…

影响肯定是有的。至于有多大影响,只能放到实际环境中去测试才有准确结论。

<_< … … …