当我在GTmetrix.com上查看我的网站时,我得到了时间轴的以下屏幕截图。
如何减少接收时间,以便加快网站加载速度。
这是否因为非优化的PHP代码而发生?
答案 0 :(得分:6)
-
-
local.xml
中将Memcached或Redis或APC配置为缓存服务器。-
Varnish是一个整页缓存,但Magento是由块组成的 - 块独立到期 - 需要更频繁地重建整个页面。
Varnish(默认情况下)处理静态内容(JS,CSS,图像等)。我不确定它是否(默认情况下)检查html文件是否使用eTags - 我认为它确实 - 所以你可以从配置html页面开始使用eTag标头并开始缓存(但要小心到期时间 - 如果是动态页面,您的访问者将看到旧信息,您必须决定哪些页面可以接受。
如果服务器上有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)
删除所有不需要的插件
删除您不需要的任何非活动或活动插件。