Ruby Rails 3中的数据库驱动路由

Ruby Rails 3中的数据库驱动路由,ruby,database,ruby-on-rails-3,caching,routing,Ruby,Database,Ruby On Rails 3,Caching,Routing,我想问一个关于路由和使用数据库查找特定路由的理论问题 假设我有一个产品系统。我知道关于_param的一切,以及它是如何在亿万年前工作的,甚至如果我在模型本身上静态设置它,我可以从param中取出ID 问题是我想把ID去掉,用于搜索引擎优化和其他目的。我不能把它放在产品模型上,因为slug有随产品变化而变化的趋势,等等。因此,我需要把slug放在一些东西上,例如路线模型。我有一个表,其中有一个product_id列和一个slug列。slug是索引的,因此Rails可以快速查找 不过,我有几点担心:

我想问一个关于路由和使用数据库查找特定路由的理论问题

假设我有一个产品系统。我知道关于_param的一切,以及它是如何在亿万年前工作的,甚至如果我在模型本身上静态设置它,我可以从param中取出ID

问题是我想把ID去掉,用于搜索引擎优化和其他目的。我不能把它放在产品模型上,因为slug有随产品变化而变化的趋势,等等。因此,我需要把slug放在一些东西上,例如路线模型。我有一个表,其中有一个product_id列和一个slug列。slug是索引的,因此Rails可以快速查找

不过,我有几点担心:

这是最好的方法吗? 有没有一种方法可以将slug缓存在内存中,这样就不会每次都往返于数据库? 如果我的数据库只是在索引的表中查找一个简单的slug,它会受到巨大的冲击吗?我想我需要自己做一些性能测试,但我很好奇是否有人曾经测量过这个。 谢谢

使用

免费、开源、高性能、分布式内存对象缓存系统,本质上是通用的,但旨在通过减轻数据库负载来加速动态web应用程序。 Memcached是内存中的键值存储,用于存储任意数据字符串的小块、来自数据库调用、API调用或页面呈现结果的对象。 Memcached简单但功能强大。其简单的设计促进了快速部署、易于开发,并解决了大型数据缓存面临的许多问题。它的API可用于大多数流行语言。 红宝石是


你可以在这里选择任何gem

是的,我实际上要将整个数据库切换到Redis,这样也可以工作。谢谢