如何减少服务器响应时间?

时间:2014-03-20 11:38:30

标签: performance apache magento

当我在GTmetrix.com上查看我的网站时,我得到了时间轴的以下屏幕截图。

Screenshot

如何减少接收时间,以便加快网站加载速度。

这是否因为非优化的PHP代码而发生?

2 个答案:

答案 0 :(得分:6)

问题和建议:

  • 问:62毫秒的接收时间很好。你怎么减少1.5秒的等待时间?
  • S:等待时间是服务器撰写页面所花费的时间。

-

  • 问:您是否启用了平台?
  • S:启用平面表并确保所有自定义集合查询仍能正常工作(集合查询会自动从基于EAV资源的查询转换为基于平面资源的查询)。

-

  • 问:您是否启用了缓存(缓存服务器没有文件缓存)?
  • S:在local.xml中将Memcached或Redis或APC配置为缓存服务器。

-

  • 问:你的Magento更像是一个带有主题的开箱即用的安装,还是主题,也许是逻辑大量定制?
  • S:如果是OOTB主题 - 主题是否支持正确的缓存?
  • S:如果是大量定制的Magento,你是否考虑过必要的缓存支持代码?

背景信息:

清漆:

Varnish是一个整页缓存,但Magento是由块组成的 - 块独立到期 - 需要更频繁地重建整个页面。

Varnish(默认情况下)处理静态内容(JS,CSS,图像等)。我不确定它是否(默认情况下)检查html文件是否使用eTags - 我认为它确实 - 所以你可以从配置html页面开始使用eTag标头并开始缓存(但要小心到期时间 - 如果是动态页面,您的访问者将看到旧信息,您必须决定哪些页面可以接受。

Memcached(或Redis或APC)和阻止缓存:

如果服务器上有Memcached,则可以配置local.xml文件以开始使用Memcached进行会话以及块缓存。但是由于你的Magento经过大量修改,你的Block类需要是可缓存的 - 它们需要覆盖getCacheKey方法并返回一个字符串,该字符串需要根据渲染块的HTML内容而有所不同。

示例:

  • 如果您有一个显示常量HTML片段的块,则该键可以是任何唯一的字符串,您可以“计算”而无需实际重建/重新呈现该块(例如您在布局中给出块的名称)。 XML)。

  • 如果您有一个显示“Hi {{username}}!”的块。然后密钥应该基于用户名或user_id,例如$key = "user_welcome_".$user->getId();,可以从会话中轻松获取当前用户,这样您就不必运行数据库查询来获取它。

  • 如果你有一个依赖于多个参数的块,那么在构建缓存密钥时需要考虑所有这些参数,你需要考虑参数信息需要可以访问的事实。尽可能少的处理 - 如果你从数据库中获取信息只是为了计算缓存密钥你可能我做错了 - 例如,一个块可能会根据当前的CMS page_id而有所不同,但你不需要从数据库加载Page对象知道,你可以只处理URL或$_GET变量并使用该信息来构建缓存密钥。

答案 1 :(得分:0)

删除所有不需要的插件

删除您不需要的任何非活动或活动插件。