WordPress 还是自定义? (Complicated/Long, 有点)

Wordpress or Custom? (Complicated/Long, Kinda)

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

我正在和几个朋友开始一个 "random thought blog" 项目。我主要是该项目背后的极客,尽管我会时不时地贡献一些 posts。

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

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

我的主要想法是 "We're about articles, purely, if we use media it'll be minimal. Code your own, Wordpress is bloated"。我特别记得 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

如您所见,在早期的结构中,它是一团糟。即使我完成了结构并最终得到了项目的完美列表,但在创建列表时,这确实感觉是一个巨大的打击 "that is one big wheel you're reinventing there!"。

我的顾虑: - Wordpress 显然是一个建立和维护良好的平台,但是,它如何针对缓存和极简主义使用进行扩展? (后端) - 稳定性,我看到很多用户还在使用3.9.4?版本,我认为是版本 3 中的最后一个里程碑。我的假设是他们基本上认为 "It's stable by now, I won't have to worry about updates much"。 - 我讨厌每两周更新一次代码,真的。这是主要问题之一,如果我使用 Wordpress,我将不得不经常更新它。他们经常发布小里程碑吗?

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

我最后一个问题,它如何扩展共享主机的资源?即:每个典型 post 页面执行的查询数。缓存?数据库缓存?

谢谢。

Wordpress 的用途非常广泛,可以成为适用于各种项目的非常强大的平台。人们不仅可以 运行 博客,还可以访问电子商务、会员资格、论坛和所有不同类型的网站。

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

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

平台本身可以很好地扩展。您在途中会发现的最大问题实际上是您的网络服务器。我不得不 "save from slow loading" 访问的大多数高流量网站都是在服务器端而不是 WP 端完成的。

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

  • 使用好的缓存插件。 WP-Super-Cache is a really good one and it's easy to setup. I like W3-Total-Cache,它有很多选项,让您可以很好地控制所有缓存内容。两者都是很棒的插件,并且多年来一直得到很好的维护。我不会就哪个更好或更快进行永恒的讨论,无论您选择哪个都可以正常工作。

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

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

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

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