>  기사  >  백엔드 개발  >  比较大的项目 要不要把url都统一到一个表里面?大家都是怎么做的?

比较大的项目 要不要把url都统一到一个表里面?大家都是怎么做的?

WBOY
WBOY원래의
2016-06-06 20:41:02854검색

<code>是这样的,最近项目越来越大 包括 手机端 微信嵌入网站  支付宝服务窗嵌入网站  PC端(下面有很多二级域名 比如 passport api  service) 等等 

我在考虑 是不是要把整站的url 路径 都写入到一个表里面 然后用统一的一个函数 来调用url  

否则的话 比如说 http:xxx/article  这个详细页面 url  站内各个模块都有关联 如果这个url更改了 那么代码里面 很多关于这个页面的 url 定向  都要修改  我在考虑是不是 把所有的url  (包括 后台和前台) 都集中到一个表 里面 管理  然后每个url 对应有 权限  别名  rewrite 等等属性 这样 调用的时候 比如说这个  geturl("article")  根据article这个别名 来调用 url  不管url怎么改变 还是 做了 rewrite 都不用改代码了 

不知道各位大神是怎么做的呢?
</code>

回复内容:

<code>是这样的,最近项目越来越大 包括 手机端 微信嵌入网站  支付宝服务窗嵌入网站  PC端(下面有很多二级域名 比如 passport api  service) 等等 

我在考虑 是不是要把整站的url 路径 都写入到一个表里面 然后用统一的一个函数 来调用url  

否则的话 比如说 http:xxx/article  这个详细页面 url  站内各个模块都有关联 如果这个url更改了 那么代码里面 很多关于这个页面的 url 定向  都要修改  我在考虑是不是 把所有的url  (包括 后台和前台) 都集中到一个表 里面 管理  然后每个url 对应有 权限  别名  rewrite 等等属性 这样 调用的时候 比如说这个  geturl("article")  根据article这个别名 来调用 url  不管url怎么改变 还是 做了 rewrite 都不用改代码了 

不知道各位大神是怎么做的呢?
</code>

这个可以有,最好是将mysql的url缓存到memcache或redis,不然每个请求到去查表的话,性能就不好了。

可以这样做,点评很长一段时间就是如此的。
现在因为有了SLB,软负载均衡,所以配置变的复杂了,基本都在SLB层面上做掉了。
另外这样的好处还有就是方便AB Test等同URL的应用切换。

不过有几点要注意:
1、URL匹配规则的顺序,有时会出现先前的规则覆盖后面的规则,那么URL路由就到不到后面规则的解析器。
2、URL匹配的性能,灵活利用多种匹配规则,例如starts_with, ends_with,等以及正则的写法对性能的影响。
3、楼上提到放到memcached或redis里,其实因为URL规则的访问密集性以及整体不会太大,反而是建议就放在本地内存中。

php的我不知道,不过我知道别的语言里,大多路由都需要手动注册,然后通过模版里的helper用路由名称来渲染路径,如django的urlfor

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.