database - WordPress 还是自定义? (复杂/长,有点)

标签 database wordpress caching pageload

这个问题之前可能被问过几次,但我有几个问题看起来很菜鸟。如果我问的任何问题看起来很平庸,我必须提前道歉。

我正在和几个 friend 开始一个“随想博客”项目。我主要是该项目背后的极客,尽管我会时不时地发布一些帖子。

我已经完成了主题的设计,它是典型的博客风格的模板和布局,可以很容易地集成到任何 CMS 中。

我发现自己坚持的部分是平台。我上次开始一个项目是在 phpBB 3 还很新的时候。我当时使用 WordPress 的体验并不好。

我的主要想法是“我们纯粹是关于文章的,如果我们使用媒体,那将是最小的。自己编写代码,Wordpress 很臃肿”。我特别记得 Wordpress 的缓存问题,虽然我不确定当时的确切问题是什么,具体来说,Wordpress 的加载速度很慢(每页)。

我开始规划平台、文件结构、数据库结构等,然而,我发现这个项目,尽管它应该是极简的,但它完全是巨大的。

给出一个想法,这是我到目前为止提出的基本数据库结构(请原谅明显的错误)

User: - id - username - public name - email - password - birth date - gender - country - avatar - avatarUrl - registrationDate - displayContent - group_id - ip - sessionToken - sessionTime - lastLogin - loginAttempts - isTrashed - isBanned - isFlagged - isRestricted

Group: - id - groupName - groupColor - groupIcon - avatarEnable - remoteAvatarEnable - isAdmin - addPost - editPost - trashPost - deletePost - editUser - trashUser - deleteUser - addGroup - editGroup - trashGroup - deleteGroup - addPage - editPage - deletePage - viewLogs - isTrashed

Category: - id - categoryName - categoryIcon - categoryColor - isRecommend - worthNotice - sfw - isTrashed

Post: - id - title - content - authorName - authorId - date - sfw - category - like - dislike - isTrashed - lastEditedDate

Comments - id - userid - email - website - username - content - ip - date - postId

Banned - id - isGuest - userId - username - banDate - startDate - endDate - isPermanent - ip - ipBanned

Website - domain - offline - allowLogin - seoUrl - enableCaptcha - captchaKey - shareButtons - globalNotice - noticeType - displayNotice - notepad - displayAvatars - displayRemoteAvatars - defaultUserAvatar - defaultGroupIcon - defaultCategoryIcon - pageIcon - allowRemoteLogin - allowLocalComments - disqusKey

Pages - id - name - createdBy - lasteditedBy - date - pageIcon - lastUpdatedDate - displayInCategory

Logs - id - entryBy - ip - eventType - eventName - eventId

如您所见,在早期的结构中,它是一团糟。即使我仔细检查了结构并最终得到了项目的完美 list ,但在创建 list 时,我真的感觉像是一个巨大的打击,“那是你在那里重新发明的一个大轮子!”。

我的担忧: - Wordpress 显然是一个建立和维护良好的平台,但是,它如何针对缓存和极简主义使用进行扩展? (后端) - 稳定性,我看到很多用户还在使用3.9.4?版本,我认为是版本 3 中的最后一个里程碑。我的假设是他们基本上认为“它现在很稳定,我不必担心更新太多”。 - 我讨厌每两周更新一次代码,真的。这是主要问题之一,如果我使用 Wordpress,我将不得不经常更新它。他们是否经常发布次要里程碑?

我知道这听起来很糟糕,担心更新之类的事情,因为这是任何极客都会给出的一个建议(始终保持最新状态)。

我最后关心的是,它如何扩展共享托管的资源?即:每个典型帖子页面执行的查询数。缓存?数据库缓存?

谢谢。

最佳答案

Wordpress 用途广泛,可以成为适用于各种项目的强大平台。人们不仅可以在上面运行博客,还可以运行电子商务、成员(member)资格、论坛和各种不同类型的网站。

我的背景是,我管理过在多服务器设置上拥有超过 100 万次综合浏览量的 Wordpress 网站,而且还在共享托管环境中优化了许多小型网站。您只需要知道如何在高容量、糟糕的托管等“敌对”环境中正确设置它。好消息是:大多数初学者不必处理它。

Wordpress 现在的版本是 4.2.1,通常次要版本每 2-3 周出现一次,主要版本大约每 3 个月出现一次。保持更新真的很轻松,对于大多数不懂技术的用户来说,你可以简单地“把它留在那里”,它最终会自行更新。对于想要更多控制权或知道自己在做什么的用户,我建议的第一件事是关闭自动更新。但也有缺点:您最终必须更新,特别是为了避免可能出现的各种漏洞利用。

平台本身可以很好地扩展。您在途中会发现的最大问题实际上是您的网络服务器。大多数我不得不“避免缓慢加载”的高容量网站都是在服务器端而不是 WP 端完成的。

但是您当然可以优化它,通常我会这样做,特别是对于共享主机设置:

  • 使用一个好的缓存插件。 WP-Super-Cache是一个非常好的,而且很容易设置。我喜欢W3-Total-Cache ,它有很多选项,可以让您很好地控制所有缓存内容。两者都是很棒的插件,并且多年来一直得到很好的维护。我不会就哪个更好或更快进行永恒的讨论,无论您选择哪个,两者都可以正常工作。

  • 保持干净的代码并遵循wordpress coding standards .这可能看起来很明显,但那里有很多糟糕的编码主题。具有各种缺陷的主题,例如直接访问数据库(这可能会导致数据库缓存绕过)、未过滤的表单和输入等。

  • 使用 CDN。它可以更快地加载所有主题 Assets (JS、CSS 和图像)。对于初学者来说,设置 Amazon S3 存储桶并将其用作 CDN 并不难,而且它也是免费的,因为大多数初学者不需要使用 AWS 为您提供的存储和带宽的所有免费套餐。

  • 我建议使用 Cloudflare作为额外的缓存层和 CDN。免费版非常好,可以解决您的问题。一些托管公司强制使用 Cloudflare 或任何缓存插件,以避免使用错误 WP 代码的客户端出现问题。

这些主要是优化技巧,但开箱即用的 Wordpress 也能正常工作。至少试一试。希望这对您有所帮助且清晰。

关于database - WordPress 还是自定义? (复杂/长,有点),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29833297/

相关文章:

python - 切换到 Django 自定义用户模型、组和权限

css - WordPress CSS 和内联 SVG

php - 添加到购物车错误后 Woocommerce 重定向

java - Android Picasso - 清除缓存但图像仍然存在

caching - DataCache 获取所有命名区域

Java - 使用 JDBC 连接到在线 MySQL 数据库时遇到问题

database - postgres_fdw 模块的 Postgresql 问题

php - 如何在构建导航时将自定义代码添加到 wordpress 中的特定 <li>?

c++ - 将整个 ASCII 文件读入 C++ std::string

mysql - 卡住!如何连接三个 SQL 表来回答这两个问题?或者我不需要?