构建数据库、codeigniter 模型和 javascript 调用以优化速度和效率

Posted

技术标签:

【中文标题】构建数据库、codeigniter 模型和 javascript 调用以优化速度和效率【英文标题】:Structuring databases, codeigniter models, and javascript calls to optimize speed and efficiency 【发布时间】:2012-07-20 18:57:20 【问题描述】:

我正在开发一个我相信会成倍增长的网站。

开发网站时需要考虑带宽使用和速度,因为非常简单。我很担心,因为我在这方面的经验很少,所以虽然我知道该网站可以同时处理 10 个用户,但我不知道它是否可以处理 100 甚至 1000。

如果它发生,我宁愿预防问题而不是治愈它,因此我正在寻找有关该主题的任何建议/信息/以下特定问题的答案。

如果我有一个产品表,其中包含一个类别列。然后,我在产品表中搜索所有具有“食品”类别的项目 - 这是否比具有包含包含在其中的产品 ID 的列的类别表更可取?

使用 Codeigniter 从模型调用其他模型有什么缺点?

使用 javascript(使用 jquery)我想要一个包含通知(来自 db 表)的自动刷新 div。据我所知,除了完全做到这一点之外,没有其他方法可以做到这一点 - 每 x 秒重新加载 div .. 有 1000 个用户,每 10 秒重新加载一个 div 我可以看到事情变得非常资源密集。 facebook等肯定必须做这样的事情..?如何有效地实现这一目标?

非常感谢 托马斯

【问题讨论】:

这个网站公开了吗? 没有。还没有 - 我正在 atm 开发它 对于大型网站(即将推出),您可以考虑使用 NoSQL。我现在正在考虑我的,因为它使用数据库,而不是记录。一个很大的学习曲线,但它可能是值得的。 couchbase.com/why-nosql/nosql-database我相信 Facebook 和其他许多公司都在使用这项技术。 这个网站并不庞大,我也不认为它会在任何时候在线超过 1,000 名用户......对其他问题有任何见解吗? 【参考方案1】:

如果我有一个产品表,其中包含一个类别列。然后我搜索 类别为“食品”的所有商品的产品表 - 这是 最好有一个包含一列的类别表 包含在其中的产品的 ID?

这取决于您在表上的索引。如果您知道与 food 关联的 id 并且您不必查找该信息,那么整数会更快 IIRC。

使用 Codeigniter 从模型调用其他模型有什么缺点? 您的代码可能会变得混乱,而且它并不理想.. 为什么需要这样做?

使用 javascript(使用 jquery)我想要一个自动刷新的 div 其中包含通知(来自 db 表)。据我所知 除了完全这样做之外,没有其他方法可以做到这一点 - 重新加载 div 每 x 秒 .. 有 1000 个用户,每 10 重新加载一个 div 秒我可以看到事情变得非常资源密集。一定 facebook等必须做这样的事情..?如何实现这一目标 有效吗?

有几种方法可以解决这个问题,一种是使用套接字并将通知推送给用户。见http://pusher.com

还可以在计时器上使用 jQuery 和 $.ajax 通过 CI 每隔 x 秒刷新一次控制器/动作...例如;

$.ajax(
  //controller/method/limit
  url: "/notifications/get/10",
  success( function(d)
    //d is a json_encoded object returned back from the controller
  
);

最后,您可以在页面加载时加载所有通知,并每 x 秒一次显示一个。

第一个和最后一个选项可能是最不占用资源的。

第一个是因为您只在发生更改时查询和推送。第二个是因为您每次页面加载只加载一次通知,而不是每 x 秒一次。

【讨论】:

以上是关于构建数据库、codeigniter 模型和 javascript 调用以优化速度和效率的主要内容,如果未能解决你的问题,请参考以下文章

为 ion auth 和 codeigniter 构建表

Codeigniter:如何使用数据库和用户会话数据构建多语言网站?

Codeigniter 的模型部分是不是被视为 ORM 层?

在非 Codeigniter 类中加载和使用 Codeigniter 模型

如何将结果从模型传递到 CodeIgniter 中的控制器?

Codeigniter - 从模型访问控制器数据