Joomla 4 性能优化 - 第 I 部分
Joomla 4 相比 Joomla 3 是一个巨大的改进。开箱即用,你就能得到一个非常快的 CMS,内置对结构化数据的支持(以前称为“微数据”),甚至有多个缓存选项来满足任何用途,从小型个人站点到大型繁忙的门户。
由于其非常古老的过去迭代,它仍然有着不合理的慢、不利于 SEO 的 CMS 的坏名声。这离事实相差甚远。实际上,即使有专门为第三方软件构建的第三方软件的帮助,Joomla 4 没有任何第三方软件也能优于其竞争对手。
在这个文章系列中,我们将讨论如何调整 Joomla 4 以进一步提高其性能,以及如何在构建您或您客户的网站时避免所有陷阱。最终结果是既能吸引搜索引擎,又能吸引活生生的网站访客的网站。
本五部分系列是对我去年发表的 Joomla 3 性能优化系列的更新。我很高兴能够通过 Joomla 社区杂志与 Joomla 社区分享这一系列。非常感谢那些让这一切成为可能的可爱志愿者!
在本系列的第一部分中,我们将讨论为什么这很重要,以及你可以采取哪些明显的第一步来实现这一目标。
为什么你需要一个快速的网站?
在我们开始优化您 Joomla 网站性能的冒险之前,我们需要解决最基本的问题:为什么这甚至很重要?毕竟,我们在谈论你需要在发布网站之前做更多的工作。即使它已经吸引了一定数量的有机流量并且感觉速度很快,这真的值得努力吗?
我坚信,从哲学和实践的角度来看,这绝对值得花费时间。
第一个哲学原因是,一个速度慢的网站在许多层面上都是浪费的。它浪费了每个人的时间。等待4-5秒钟来加载一个页面可能听起来不是很大的一笔浪费,但一年内,每个人都要等待数十万页面加载,我们总共浪费了整个人的时间。与此同时,我们在以比所需慢的速度生成内容,发送比我们应该更多的数据,以及以比显示所必需的更慢的速度处理数据,所有这些都与你的网站的环境足迹有关。
第二个哲学原因是,速度慢的网站具有排他性。它们对依赖高延迟或慢速互联网连接的弱势社区来说更难以访问。无论是非洲村庄中唯一的可行外部联系卫星互联网,还是美国一个贫困学校区麦当劳停车场中的弱WiFi,慢速网站可能在它的内容和可能消费它、从中受益的人之间创建一个无形但非常现实的障碍。仅仅因为我们大多数人生活在发达国家的城市中心,拥有快速、低延迟的互联网连接,并不意味着我们应该通过不采取相对容易的举措来充当信息的看门人。如果你正在开发非营利、教育、政府或其他资源网站,这一点尤为重要。
至于实际原因,让我们从显而易见的问题开始,即一个速度慢的网站会给访客带来令人沮丧的体验。他们可能会放弃访问你的网站,转而访问别人的。如果他们留下来,他们可能会在一系列漫长且不必要的延迟之后处于消极的心态中。这会削弱并损害你的网站内容,阻碍重复访问,并降低你的转化率。
第二个也是最重要的实际原因是,搜索引擎不再仅根据内容和其他网站的联系来对你的网站进行排名。他们考虑的是核心网页关键指标。本质上,一个庞大或加载缓慢的网站将在搜索引擎排名中受到惩罚。即使你不关心你网站的社会和环境影响,拥有一个快速的网站也在你的最佳利益之内。
运行假设
你可能阅读过的关于网站优化的文章往往都是公理式的。它们宣称有一个“唯一正确的方法”,如果你不遵循它,你将受到永恒的诅咒。事实上,正如有那么多相互排斥的公理观点一样,这些作者显然没有意识到这一点。
并不存在“唯一正确的方法”。甚至暗示一个由单个人在业余时间创建的小型网站可以或,更糟糕的是,应该遵循与由至少几十人组成的专职团队建设和维护的中等至大型网站相同的策略,这显然与现实脱节。
我写这篇系列文章是为了那些大多数使用Joomla的网站集成者,他们单独或作为小型团队的一部分,在客户强加的时间和预算限制下构建网站。你们中的大多数人为中小企业或甚至小型“夫妻店”构建非常小型到中型的网站。你们无法承担追求“完美分数”的执着。这是几乎无法达到的目标,而不是每个网站的实用预期。是的,你可以实现完美分数,但如果这意味着你有一个难以构建和维护的网站,这真的是一件好事吗?或者你无意中报名参加了达尔文奖?
你应该只优化你负担得起的部分。你需要遵守截止日期,坦白说,一些优化可能只是占用你大量的时间,而收益却微乎其微。从简单开始,并根据客户的截止日期和预算决定是否深入。
这是本系列文章的背景。这不是公理,而是实用的。我在这里介绍各种方法,你可以通过合理的权衡,在性能提升和可维护性之间优化现实世界的网站。这些方法并不是实验室里的方法,虽然理论上效果很好,但在实践中需要比大多数读者实际可用的资源多得多的资源。
让我们换一种方式来解释。是的,如果你愿意,你可以总是创建一个基于微服务和CDN的应用程序。或者使用一些真正高级的技术,这些技术可以绕过使用Joomla(或WordPress、Drupal等)这样的CMS所带来的一系列限制。但我不在这里告诉你为什么或者如何不使用CMS。我在这里告诉你如何最好地使用你拥有的CMS,以实现你之前不知道如何接近的更好结果。这些都是我在自己的网站上实践过的方法,它们确实效果显著!
绝对“明显”的
自从2004年Joomla还被称为Mambo以来,像我自己一样,使用Joomla的人会有一系列关于网站建设的基本真理,这似乎相当明显。但问题是,没有什么真的是“明显”的,这都关乎经验。
过去我以为,人们对于我看来明显的事实视而不见,一定是疯了。最终我意识到,我有独特的经验,曾经深入无数网站的内部,我在漫长的职业生涯中积累了一套独特的技能...抱歉,说错了电影。我的意思是,我意识到对我来说明显的事情,对于现在刚开始或者习惯用与我不同方式做事的人来说,可能是相当晦涩的。坦白说,如果我能从16年前联系到我自己,我可能因为我后来某段时间用苦功夫学到的、后来证明是荒谬或者长期来看会削弱我的事情而打自己。
我将讨论我在网站上看到的最常见的三个错误以及如何轻松地修复它们。嘿,其中一些甚至与Joomla本身无关!
托管
我看到的最大错误是人们选择便宜的共享托管,然后抱怨他们的Joomla网站运行缓慢。是的,他们的网站确实运行缓慢,但Joomla并不是原因。你为网站选择的托管服务至关重要。不要在这里节省几个便士!
你有没有想过,为什么便宜的主机提供每月低于3美元的价格,而优质的主机却要收取五到十倍的价格来提供相同或略低规格的共享托管?区别在于,最便宜的主机试图在单个物理服务器上挤进更多的网站,并通过使用较慢的CPU和内存、较慢的机械硬盘和更有限的互联网连接来降低成本。所有这些因素都使得你的网站一开始就明显变慢。当你从糟糕的托管服务开始时,任何调整都无法挽救你。
可以这样想。你可以把一辆车做得像战斗机一样流线型。如果它搭载的是来自摩托车的单缸二冲程发动机,它不会赢得速度记录,甚至可能被步行速度较快的行人超过。你网站的动力是托管环境,它决定了你能从它那里榨取的最大性能。
在理想性能和您的现实预算之间寻求平衡。如果不确定,请选择口碑良好的中端共享主机服务提供商,并在几个月的真实世界流量后可能重新评估。如果客户指定了主机,务必与他们进行“对话”:解释无论您做什么,他们选择的主机都将限制您构建的网站的性能。
预构建模板
许多正在建设网站的人使用带有众多选项的预构建模板,这是一个试图满足所有人的通用框架,通常结合了数十个组件、插件和模块来构建一个如果你仔细想想并不复杂的网站。
我理解这种吸引力,因为我自己过去也这样做过。您会觉得自己有权力摆弄网站布局并尝试不同的选项,直到找到合适的。我可以说,如果您觉得这是您的创作过程,那么您应该这样做,但一旦您弄清楚您想要网站看起来是什么样子,就不必一定要坚持使用通用的预构建模板。如果您觉得制作自己的模板不舒服,当然,预构建模板是您的唯一选择,但请记住,它将在性能指标上限制您。
一个客观问题是,通用模板是为了灵活性而构建的,而不是为了速度。根据我的经验,您的页面加载时间(首次字节时间 - TTFB)可能仅仅因为这种模板的所有不必要负担而增加1到3秒。基于Joomla 4的Cassiopeia的定制模板几乎没有任何影响,只有几毫秒的范围内。
即使您只使用一半的通用模板框架,除非您真的知道自己在做什么,否则您仍然会携带大量的不必要代码。更不用说您已经安装了大量需要定期维护以保障安全的PHP和JavaScript代码。
预构建模板和模板框架的另一个问题是,它们倾向于在HTML输出的头部加载所有CSS和JavaScript,这会对您的核心网络指标产生不利影响,尤其是首次内容绘制。基于Cassiopeia的定制模板将延迟加载这些静态文件,使您的网站显示速度更快。
如果您有技能和时间,最好创建自己的模板。这听起来可能很可怕,但如果你已经是一名经验丰富的Joomla网站构建者并且了解Joomla的基本而强大的工具,如模板覆盖,那就不是那么可怕了。您可以使用任何CSS框架,您可以从默认的Joomla 4模板Cassiopeia开始。
我绝对不是前端开发者。我设法非常容易地将为我的网站创建的设计“翻译”成基于Cassiopeia的Joomla 4模板,而且没有遇到太多麻烦。内置到Joomla中并且Cassiopeia正在使用的Bootstrap 5非常灵活。您需要了解的唯一一件事情,以便制作任何类型的视觉呈现——并且是响应式的!——是 CSS Flexbox。
不要过度做
有句古老的格言是“能够并不意味着应该”。在Joomla的背景下,您能够安装数百个扩展并不意味着您应该这样做!
在Joomla扩展目录中有超过7000个扩展,很容易过度扩展并安装所有东西。这个插件,那个模块,用页面构建器代替简单的模板覆盖,很快您就会在网站的每一页上加载300多个第三方扩展。如您所想象的那样,这将使任何网站都慢得像蜗牛。
让我们来谈谈模块。我的随意观察是,我在访问或工作过的90%的网站上,90%的模块存在毫无意义。没有人关心你所在城市的天气;如果他们关心,他们会去询问谷歌、Alexa或Siri,而不是访问你的网站。没有人关心侧边栏上的三打按钮、链接和横幅。人们需要直观的导航,而不是电话簿。更糟糕的是,社交媒体网站已经使你的网站访客进入“侧边栏和横幅失明”模式,即他们认为这些内容是垃圾,不需要关心。模块可以发挥真正的用途,但请谨慎使用。不要试图用无用的模块“填满空白空间”。
这让我们想到了插件,尤其是内容插件和系统插件,它们可以对全页文本进行搜索和替换。每当内容在你的网站上显示时,内容插件都会运行。它们需要进行某种初始化和某种文本替换。这些操作需要时间。系统插件通过全页搜索和替换,尤其是如果它们使用正则表达式,则需要更多的时间。真的,在网站输出的每一页上执行搜索和替换,是模板覆盖、语言覆盖或花费一些时间在后台或直接在数据库中更改内容的更好解决方案吗?
当你过度使用模块和插件时,你可能会得到一个需要执行数百次数据库查询并花费宝贵秒数来替换花费了很长时间生成的内容的网站。是的,这个网站会非常慢。这真的不是Joomla的错,这只是你采用的实施方法的直接结果。我不会说这一定是坏事,但我也不会说这是最好的方法。
如果你有一个需要解决的问题,使用扩展应该是你的最后手段。首先从自定义字段、模板覆盖和语言覆盖开始。如果你认为网站看起来“空”,请创建优质内容,不要用没有人关心的无用的模块填充它,但仍然使你的网站变慢。首要原则是KISS:保持简单。说起来容易做起来难,通常需要几轮迭代才能达到那里。记住,始终重新评估是否需要扩展,并在不再使用时禁用或卸载它。
覆盖而不是添加冗余
大多数人开发自己的网站或客户的网站的方法与Android或iPhone用户使用他们的设备的方法相同:如果需要做某事,就需要安装某物。我称之为“有应用可用来解决”综合征或简称“TAFTS”。听起来像是一种终端状态,不是吗?
患有这种综合征的人最终会使用无数扩展,这些扩展使网站变慢,并在几个月后更新Joomla或PHP时成为主要障碍。
实际上,你不需要在你的网站上添加冗余。Joomla默认非常灵活。当你想做某事时,停下来问问自己:这可以用核心Joomla功能完成吗?
与大多数CMS不同,Joomla允许你使用语言覆盖、模板/布局覆盖和自定义字段覆盖来覆盖它显示任何内容的方式。使用这些简单工具,你可以创建非常复杂且易于管理的内容。毕竟,Joomla源自一个名为Mambo的CMS,其座右铭是“简单即力量”。
仅使用布局覆盖和自定义字段,我为我的商业网站创建了一个视频教程页面,自行托管视频(不使用YouTube / Vimeo嵌入)。您到达的视频分类页面是一个Joomla分类博客视图,使用了简单的模板覆盖和一些自定义CSS。当您点击一个分类时,您会看到视频列表。这只是分类列表视图的模板覆盖。视频长度是一个自定义文本字段。还有两个指向视频文件和海报图像的自定义URL字段。这些用于显示单个视频页面的上部(视频播放器)。该页面只是一个文章。文章内容是页面下方更远的页面上的字幕。字幕有data-timecode属性,页面JavaScript可以解析这些属性,本身加载在模板覆盖中,使它们成为指向视频播放器中特定时间的可点击链接。这是整洁的,而且是纯Joomla核心功能。无需第三方画廊或专门的视频教程组件。
我看到那些朴实的标签列表页面变成了一个非营利组织的美丽内容区域选择面板。我看到核心文章通过自定义字段定义了用户友好的内容,这是一个以触摸为先的Web应用程序,除了JavaScript触摸事件处理器外,没有使用任何第三方代码。我甚至看到非常简单的模板覆盖,让Joomla用户资料页面看起来像一个专业的高端服务,而不是一堆拼凑的字段。
诚然,仅使用核心功能并不是所有事情都可行——您不能合理地使用核心Joomla进行电子商务或预约,您需要第三方扩展或服务——但扩展绝对不是您作为网站集成者唯一或首选的选择。
通过坚持周密计划和尽可能少地使用第三方扩展,您可以避免使网站变慢,并确保其长期可维护。这在不太使用的扩展消失在地平线时尤其重要,您将面临艰难的选择:部分重新实现网站或继续使用过时的Joomla版本。记住,朋友们,事先思考的重量胜过在为时已晚时疯狂尝试修复糟糕决定的重量。
待续
这是五部分系列的第一部分。第二部分:基本设置将在2021年12月的Joomla社区杂志中提供。
本文的德语翻译:[https://www.jug-zueri.ch/artikel/performance-tuning-in-joomla-4-teil-1](https://www.jug-zueri.ch/artikel/performance-tuning-in-joomla-4-teil-1)
本文的西班牙语翻译:[https://mejorconjoomla.com/noticias/magazine/puesta-a-punto-del-rendimiento-de-joomla-4-parte-i](https://mejorconjoomla.com/noticias/magazine/puesta-a-punto-del-rendimiento-de-joomla-4-parte-i)
《Joomla社区杂志》上发表的一些文章代表了作者对特定主题的个人观点或经验,可能不与Joomla项目的官方立场一致。
通过接受,您将访问 https://magazine.joomla.net.cn/ 外部的第三方服务。
评论 1
优秀的文章。我期待下一部分。