![域的 URL 路由](https://linux22.com/image/659512/%E5%9F%9F%E7%9A%84%20URL%20%E8%B7%AF%E7%94%B1.png)
我有一个拥有数万名用户的网站。每个用户都有自己的网站,由我托管在 mysite.com/user1 的子域中,或作为 user1.mysite.com 或 user1.com 的附加域中。这一切都是在纯 LAMP 堆栈中完成的。
刚开始的时候,每个用户都需要对他们的网站进行自定义修改,所以我为每个用户创建了单独的目录。不久前,我停止了这些自定义修改,现在我有数千个目录,所有目录都包含完全相同的 php 脚本。这些目录之间的唯一区别是一个带有用户 ID 的文件 - 我使用该文件从我的数据库中获取他们的自定义选项。
为了整合我的代码,我想创建一个 .htaccess 规则,该规则占用部分 URL(如果请求的 URL 是 mysite.com/user,则获取 user1;如果是 user2.mysite.com,则获取 user2;如果是 user3.com,则获取 user3),并将其传递给 php 脚本,该脚本将调用我的数据库并返回与该域匹配的用户 ID。然后,我可以将该 ID 传递给一个通用脚本目录,该目录可以处理其他所有事情。这样做的缺点是,现在我必须为每个请求进行额外的查询。
每次请求都进行数据库调用是否会给我的数据库带来过多的负载?其他网站(如 Facebook 或 LinkedIn)也是这样做的吗?当我访问 myname.facebook.com 时,在我的页面被服务之前是否会进行数据库调用。有没有更好的策略?