因为项目原因需要定义大量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和各位提供个思路。