php - 在大型网站上平衡服务器端和客户端代码

标签 php javascript web client-side server-side

假设我正在为 Facebook(我不是)或其他一些流量较大的网站编程。

我们的总体布局是:

  1. 所有 CSS 都位于外部文件中
  2. 99% 的 JS 都在外部文件中
  3. 网站 HTML 的主干由 PHP/MySQL 后端生成。
  4. JS 函数用于生成经常更改的部分的 DOM。
  5. 我们的服务器有一个就地 API,它返回 JSON 对象,这些对象被馈送到我们的 DOM 构建器(JS 函数),该构建器采用一个 JSON 对象数组,比如说 friend 列表,然后生成用于显示列表的所有 html friend 、事件等。

问题

  • 这合理吗?
  • 正如我所提到的,使用专用的 JS 函数来构建 DOM 是常见做法吗?
  • 这可以扩展吗? JS 太慢了吗? (顺便说一句,我们几乎只使用 JQuery)
  • 我知道它极大地降低了带宽和服务器负载,因为服务器不再迭代 friend 列表(它也通过 MySQL 查询其中)并生成所有 HTML,而是进行查询并返回小 JSON 对象。这对我来说似乎没问题,但我想要第二/第三/第四/...意见。

    非常感谢!

    如果我遗漏了任何重要信息,请告诉我。

    最佳答案

    我认为你的布局相当不错,但我仍然建议你阅读YAHOO! Best Practices for Speeding Up Your Web Site 。它比我更好地总结了它(在我看来非常好读)。

    我认为 Facebook 为实现其规模所做的三件最重要的事情:

    1. 缓存 => Memcached 。这一点真的很重要。您应该记住,与 MEMORY 相比,执行磁盘 IO 速度较慢(根据我的 book 磁盘 5ms/内存 40-80ns)。 Facebook 几乎所有的活跃数据都在内存中。 These old slides说他们有超过 5TB 的内存。现在这将会更多!
    2. HIPHOP => https://github.com/facebook/hiphop-php/wiki/
    3. 离线处理 => 使用消息队列,例如 redis , beanstalkd , gearman仅举几例。

    其他一些有趣的链接:

    关于php - 在大型网站上平衡服务器端和客户端代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3346185/

    相关文章:

    php - Jquery 切换 .. 固定对齐

    javascript - 如何确认输入的文本是什么?

    javascript - 为什么 javascript 协议(protocol)会自动解码 URL?

    html - 更改一个元素的 CSS 会影响 div 之外的其他元素

    html - URL 路径参数中语言环境的最佳格式是什么?

    javascript - PHP持久登录不用担心窃取cookie

    php - 如何使用 PHP 从数据库中检索某些表?

    PHP - 检查命名空间内是否存在全局类

    javascript - 如何在 redux-sagas 中注入(inject)依赖项(或上下文)

    python - Django : extract image from database and display in template