如何提高服务器响应时间?


17

除了使用诸如jotcache之类的缓存插件外,我还能做什么来改善网站的服务器响应时间

我已经删除了所有不活动的文章模块,插件和组件,还有什么我可以做些改进的吗?

我说的是客户(浏览器)对他的请求作出响应之前时间。而不是页面加载的时间。


响应时间是php文档完成之前的时间,因此您想查看sql和php调用,然后缓存我建议的html问题
tristanbailey 2014年

当您说服务器响应时间时-是指首次发出请求时服务器的响应,还是服务器准备和提供页面所花费的时间?通过Pingdom速度测试运行您的站点并发布结果,然后我们可以为您提供针对实际问题的特定解决方案。
Brent Friar 2014年

Answers:


25

您可以采取几个步骤来提高服务器端的性能。请注意,其中一些将不适用于大多数共享主机。为了获得出色的性能,通常需要更精细的控制。

与任何优化一样,您应该评估它对网站性能的影响。对于基本优化,诸如PageSpeedYSlow之类的工具很有帮助(我建议使用Firefox版本)。为了更深入地了解,您必须测量一段时间内实时系统的实际响应时间。

的PHP

  1. 启用操作码缓存

    这可能是您可以提高网站性能的唯一最大的事情。我建议使用OpCacheAPC。可以根据服务器和站点的特定需求来调整这些缓存的配置,以提高性能,但是仅安装就已经有了很大的提升。

  2. 更新PHP版本

    较新的PHP版本通常会提高性能。此外,在许多情况下,当在较新的PHP版本上运行Joomla时,它们可以使用更好的代码。从今天起,如果您关心性能,则不应使用PHP 5.4之前的PHP版本。

  3. PHP设置

    在较旧的PHP版本(<= 5.3)上,请务必关闭电源register_globalsmagic_quotes_gpc免费获得性能。在PHP> = 5.6上更改always_populate_raw_post_data为-1。

  4. PHP扩展

    Joomla包含一些代码来解决丢失的PHP扩展的问题。这将永远比那些扩展慢。一个体面的性能改进安装以下扩展名:mbstringzipftp

网络服务器

  1. 启用gzip

    启用服务器端压缩会以带宽换取CPU资源。对于大多数网站,这是正确的选择。注意仅压缩文本数据,压缩二进制数据将给您带来CPU冲击,而没有带宽优势。您也可以在Joomla设置中启用压缩,但是最好让服务器处理。

  2. 预压缩静态资源

    我不是在谈论最小化(尽管这也有帮助),但是您可以将Nginx和Apache配置为服务器已压缩的资源,从而有效消除gzip压缩对CPU的影响。优点:对于较小的文件,请使用Zopfli

  3. 对PHP使用FastCGI

    更具体地说,您应该使用php-fpm。这样可以防止在浏览器请求非PHP文件时启动PHP。

  4. 使用适当的缓存头

    使用Expires标头可以大大减少所需的服务器资源。毕竟,最快的请求是从未完成的。

阿帕奇

通常,我建议将Nginx用于高性能站点。如果由于某些原因您确实需要使用Apache,那么我会得到一个额外的提示:

  1. 禁用AllowOverride

    设置AllowOverrideNone防止大量磁盘IO和

Joomla

  1. 不要使用FTP模式

    虽然它不会影响您的用户阅读站点,但会减慢某些操作,如扩展程序安装。

  2. 关闭未使用的扩展

    对于插件来说尤其如此,其中许多都是在每个请求上运行的。列出可用的扩展名和菜单类型时,禁用菜单和组件主要有帮助。还要花5分钟时间浏览Joomla核心随附的扩展,并禁用不使用的扩展。

  3. 关闭准备内容

    如果您使用许多自定义模块(mod_custom而不是自写模块),请检查是否可以禁用其中的“准备内容”。这样可以节省一些处理。

  4. 使用缓存

    如果您对性能很认真,则需要启用缓存。对于具有许多匿名用户的阅读繁重站点特别有用。登录的用户将绕过大部分缓存,如果您有很多缓存,则影响不会那么大。

  5. 使用备用会话处理程序

    通过使用备用会话处理程序,您可以释放数据库以用于更重要的事情。我不建议使用文件(在Joomla设置中令人困惑地称为“无”),因为这将再次增加磁盘IO。使用APC可能是最快的选择,但会增加丢失所有会话数据的风险。正确的中间地带是Memcache。尽管这需要额外的过程,但它比APC更可靠,并且比将所有数据存储在数据库中快得多

  6. 让您的网站保持简单

    您真的需要那个Facebook按钮吗?那只因部分隐藏在横幅后面而没人见过的可爱图标呢?您的网站显示的越少,它就会越快。也尽可能使用CSS3代替图像。

  1. 设置图标

    感谢可以追溯到Internet Explorer 4.0决定,favicon.ico每当用户访问您的网站时,浏览器都会向一个名为的文件发出请求。如果您没有,则会导致不必要的IO,因为不会缓存404响应。可以使用HTML meta标签指定您网站的图标,也可以添加一个称为favicon.icoWeb根的文件。不需要收藏夹图标?在该位置放置一个尺寸为1x1像素的透明PNG。请注意,扩展名仍需为.ico

  2. 优化图像

    通过优化图像(尤其是PNG文件)可以节省多少钱,这真是令人惊讶。有多种工具可用于任何操作系统,就我个人而言,我使用可用于OS X的ImageOptim。Joomla的核心映像已进行了优化,但要经过您自己的映像,尤其是模板很重要。您也可以检查正在使用的扩展名。如果它们是开源的,为什么不提交包含新优化图像的请求请求?

进阶

如果您真的想全力以赴,请考虑将Varnish放在您网站的前面。它将请求缓存到您的站点,并在可能的情况下从其自己的缓存中为它们提供服务,永远不要访问Joomla。这是一个复杂的工具,但功能强大。Joomla不会利用Edge Side Includes(ESI)等高级功能,但您自己的代码可以。


8
似乎……不友好。仅供参考,我只是写了这篇,但文本没有任何准备。随意用谷歌搜索。记住答案不仅会帮助最初的提问者,还会为将来的用户找到答案。
RouvenWeßling2014年

13

您可以提高网站响应时间的一件大事是更新模块设置。自定义模块(使用mod_custom)具有启用/禁用内容准备的选项。这使您可以在自定义模块内的数据内容上运行内容插件。如果使用正确,它功能强大,但确实会增加模块输出的渲染时间。除非您实际上在自定义模块内容中使用了内容插件,否则最好将其关闭。当您这样做时,您会看到模块渲染时间的减少。

设置的屏幕截图: 在此处输入图片说明

注意:如果我的答案对您有帮助,请单击左侧的复选框以接受答案。


3
我以前从未看过“准备内容”部分。这适用于什么版本的Joomla?
TryHarder 2014年

1
如果启用,则插件可以在内容上运行。因此,如果您在自定义html textarea中放置模块位置短代码或其他插件短代码,则这些不会显示,您只会在网站上看到例如“ {tag_name}”,而不是准备好的版本
tristanbailey 2014年

2
Joomla 2.5和3.x中包含“准备内容”选项。默认设置为“否”。
尼尔·罗伯逊

8

我假设您已经通过Google Page的速度运行了您的网站,并且您的确希望减少页面的响应时间,即标记发送到浏览器所花费的时间。

这些问题最可能的罪魁祸首是繁重的查询。打开调试,然后查看页面底部,找出哪些是最繁琐的查询,然后删除或减少这些查询。您也可以利用MySQL服务器的慢查询日志。

您可以查看的下一件事是缓存。根据您拥有的站点类型,您可以启用保守或渐进式缓存。渐进式将用于不具有和用户相关功能的网站。


您能否提供一些提示或截屏,以查看繁重的查询?有没有达到的门槛?
大卫·弗里奇

这实际上取决于您的应用程序。但是,出现在慢速查询日志中的任何查询(在正常设置下,该日志都会记录执行超过1秒的所有查询),这是拆分和/或放入缓存的不错的选择。另一件事听起来可能很愚蠢,但是请确保所有查询都具有LIMIT。
Ashwin日期

6

我所知道的可以帮助的事情(其中大多数已经列出)是:

  1. 快取
  2. 压缩(将您的css和js文件压缩为gzip)
  3. 合并文件(所有CSS都合并为一个文件)
  4. 将图像和文件卸载到CDN上。

我结合使用了内置的Joomla缓存(甚至在服务器上启用了APC)和gzip或火箭主题的rockbooster插件之类的插件。我也将nonumbers CDN插件用于亚马逊帐户。

它绝对有帮助,但是您必须监视您的站点并为有问题的组件禁用缓存。我不得不绕过我们网站上的CiviCRM,因为它在缓存方面表现不佳。Joomla带有一个可以处理该问题的cachecontrol插件。


2
尽可能合并并压缩图像。Sprite可以在每次加载页面时保存数十个请求。
ContextSwitch

我总是忘了精灵。:)
Brian Peat 2014年

关于精灵的一件事-Windows切换到“高对比度”模式时,不显示背景图像。尽管对于一般图形来说,这种行为是受欢迎的,但对于用户必须单击的控件来说,这是一个问题-它们只是消失了(例如:此站点上的投票按钮)
miroxlav

Heh Brian Peat,我想知道您是否有兴趣帮助我们在StackExchange上启动CiviCRM网站。我们需要在其他StackExchange网站上拥有200多个声誉的提交者:area51.stackexchange.com/proposals/77367/civicrm干杯!
Joe Murray 2014年

我会看看。这些都是基于Joomla的,我没有做任何编程,但是我可能可以帮助解决一些基本问题。
Brian Peat

4

您还需要考虑减少本地资产和适当的缓存。您可以做的一件事是使用CDN插件。这是我建议的两个:

'corePHP'jomCDN- https: //www.corephp.com/joomla-products/jomcdn

Joomla的NoNumbers CDN!- http://www.nonumber.nl/extensions/cdnforjoomla

另外,如果上述方法都不能解决问题,那么您可能遇到了更深层次的问题-可能在模板,服务器本身或其他方面。如果是这种情况,最好雇用某人来寻找问题并为您解决。


3

您还可以在.htaccess文件中使用以下代码:

RewriteEngine On
RewriteCond %{HTTP_HOST}  ^www.your domain [nocase]
RewriteRule ^(.*)         http://your domain/$1 [last,redirect=301]
RewriteEngine on
<ifmodule mod_deflate.c>
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript text/javascript
</ifmodule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"
</IfModule>

这看起来很有趣,您能解释一下它的作用吗?
web-tiki

@ web-tiki它的设置使标题失效。Expires标头告诉浏览器是应从服务器请求特定文件还是应从浏览器的缓存中获取文件。Expires Headers背后的整个想法不仅是要减少从服务器下载的负载(在未经修改的情况下不断下载同一文件,这会浪费宝贵的加载时间),而且还在于减少服务器的HTTP请求数量。参考gtmetrix.com/add-expires-headers.html
TryHarder,2016年

2

我已经使用Joomla创建了数百个网站!

在大多数情况下,人们认为Joomla在服务器上工作量很大,但是根据我所做的分析,保持网站FAST的最重要的事情是优化图像和JS / CSS。

不要使用Joomla编辑器(如JCE)来更改图像的大小。使用photoshop等图像编辑器或其他任何编辑器将图像调整为所需大小!

使用JS / CSS压缩工具。

我们始终使用Pingdom Tools来分析网站速度,并使用T3 Framework的内置功能来优化JS / CSS!


您使用什么工具进行JS / CSS压缩?关于有人如何像您对网站所做的那样分析网站的任何建议?
大卫·弗里奇

我们始终使用Pingdom Tools来分析网站速度,并使用T3 Framework的内置功能来优化JS / CSS!
Gev Balyan 2014年

2
我还成功地使用了JCH优化来实现很多压缩和最小化。另一个选择是使用Apache的mod_pagespeed,它基本上实现了Google Pagespeed的大多数建议。
Ashwin日期

2
所有好的工具。@GevBalyan,建议您通过链接将这样的内容添加到您的答案中。为人们节省了一些搜索!您甚至可以编辑此答案以将其添加到此答案中。:)
David Fritsch 2014年

不缓存的压缩工具实际上会增加服务器响应时间,因为这会增加服务器响应的处理时间。
Don Gilbert

1

您是否删除了未使用的插件?Joomla必须为请求中触发的事件加载和处理每个已发布的插件。

您必须了解已安装的扩展以及它们如何与Joomla交互!

许多扩展程序安装了插件,这些插件管理内容,系统或用户活动以初始化代码功能。其中一些可能是多余的。

我知道k2安装了许多插件来响应与语言相关的事件,这些事件不会为单个语言站点产生任何实际输出。取消发布这些插件可以减少处理时间。


你能谈谈更多吗?“事件触发”是什么意思?我如何知道触发了哪些事件?
大卫·弗里奇

1
好问题。您必须了解已安装的扩展以及它们如何与Joomla交互!许多扩展程序安装了插件,这些插件管理内容,系统或用户活动以初始化代码功能。其中一些可能是多余的。我知道k2安装了许多插件来响应与语言相关的事件,这些事件不会为单个语言站点产生任何实际输出。取消发布这些插件可以减少处理时间。但是类似地,K2本身有一个坏习惯,即建立昂贵的查询以生成可疑的指标。
Joomsavvy 2014年

1
您能否用评论中的信息更新您的答案?
Harald Leithner 2014年

1

改善服务器/虚拟主机计划资源

也许不是OP所寻找的答案,但是值得一提的是万一它不是对每个人都显而易见的(并且还没有其他答案提到这一点):改善服务器资源,例如内存,CPU和磁盘速度。

如果您使用共享的虚拟主机,则从“经济”计划升级到“业务”计划或其他更高级的计划可能会改善网站可用的服务器资源并减少服务器响应时间。转向质量更高的托管公司(例如,使用较少的共享网络托管服务器)也可能会有所帮助。

更好的托管计划可能还会使您能够访问基本托管计划中未包括的性能增强功能。例如,“ GrowBig”和“ GoGeek” SiteGround托管计划包括动态缓存,这有助于显着减少服务器响应时间。动态高速缓存选项在“启动”计划中不可用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.