dmc/m2-module-performance

为 Magento 2 提升性能

安装: 107

依赖项: 0

建议者: 0

安全: 0

星星: 15

关注者: 5

分支: 3

类型:magento2-module

1.0.1 2018-10-09 08:37 UTC

This package is not auto-updated.

Last update: 2024-10-02 20:51:25 UTC


README

DMC_Performance 是一个模块,总结了为 Magento 2 找到的某些优化。它这样做,但并非旨在移除功能(除报告和访客记录之外)。

这导致页面加载速度略有提升,但在不比较统计信息的情况下可能并不明显。

兼容的 Magento 版本

目前该模块已与 Magento Open Source 2.2.2 进行了测试,并至少依赖于这个版本。

功能

  • 移除报告事件和访客记录
  • 调整导入批次大小以加快导入速度(请谨慎使用,可能会增加内存使用量)
  • 增强产品导入类型的批次大小(请谨慎使用,可能会增加内存使用量)
  • 命令 dmc:catalog:images:resize,使用图像 ID 白名单加快图像缩放
  • 对于其他情况下需要使用单条查询的数据,产品列表上的聚合产品数据附件
  • 默认商店配置设置,用于平面目录、异步索引、cron 进程使用(在值上进行的数据库节省将覆盖此设置)
  • 通用缓存辅助程序(不是 PSR-6,但可用于快速使用)以保存和加载自定义缓存
  • Cloudflare 模块修复(应在此处移除,尽管它可能不会造成任何问题)
  • 将 store_id 添加到匿名块缓存中,以便它们将为各自的商店缓存
  • 顶级菜单类别数据自定义缓存(如果您知道如何使用集合缓存,请告知我)
  • 使用自定义缓存在前端缓存产品属性选项

安装

该软件包应通过 packagist.org 提供,因此可以直接安装。

composer require dmc/m2-module-performance:^1.0
php bin/magento module:enable DMC_Base
php bin/magento module:enable DMC_Performance
php bin/magento setup:upgrade

可选地进行所有生产使用所需的操作。

使用方法

这里有一些功能可以利用。

更快地缩放图像

当渲染包含产品图像的页面时,Magento 将实时生成产品缓存图像,这可能很耗时。另一方面,使用 catalog:images:resize 从 Magento 生成的图像缓存通常会生成许多不必要的图像。因此,生成将花费很长时间,并创建您可能根本不会使用的图像。

使用命令 dmc:catalog:images:resize 您可以启动图像缩放过程,这将为 Magento 创建缓存图像更快。为此,它将使用产品集合而不是逐个使用 load() 加载产品,并过滤要创建的图像。

请注意,目前此操作正在 view.xml 中使用白名单!您可以使用两个节点,并必须理解图像的生成方式。请首先查阅 Magento 文档中的主题图像属性:http://devdocs.magento.com/guides/v2.2/frontend-dev-guide/themes/theme-images.html

这是您可以在 view.xml 中使用的示例配置

           <var name="generate_image_ids">
               <var name="cart_cross_sell_products">cart_cross_sell_products</var>
               <var name="cart_page_product_thumbnail">cart_page_product_thumbnail</var>
               <var name="category_page_grid">category_page_grid</var>
               <var name="category_page_list">category_page_list</var>
               <var name="customer_account_product_review_page">customer_account_product_review_page</var>
               <var name="product_base_image">product_base_image</var>
               <var name="product_thumbnail_image">product_thumbnail_image</var>
               <var name="mini_cart_product_thumbnail">mini_cart_product_thumbnail</var>
               <var name="related_products_list">related_products_list</var>
               <var name="recently_viewed_products_grid_content_widget">recently_viewed_products_grid_content_widget</var>
               <var name="recently_viewed_products_images_names_widget">recently_viewed_products_images_names_widget</var>
               <var name="recently_viewed_products_list_content_widget">recently_viewed_products_list_content_widget</var>
               <var name="upsell_products_list">upsell_products_list</var>
               <var name="wishlist_thumbnail">wishlist_thumbnail</var>
               <var name="wishlist_sidebar_block">wishlist_sidebar_block</var>
               <var name="related_product_image">related_product_image</var>
           </var>
           <var name="generate_gallery_image_ids">
               <var name="product_page_image_small">product_page_image_small</var>
               <var name="product_page_image_medium_no_frame">product_page_image_medium_no_frame</var>
               <var name="product_page_image_large_no_frame">product_page_image_large_no_frame</var>
               <var name="product_base_image">product_base_image</var>
               <var name="product_thumbnail_image">product_thumbnail_image</var>
           </var>

对于 generate_image_ids,仅生成与属性相关联的附加图像。对于 generate_gallery_image_ids,将生成所有图像,因为媒体相册也将加载它们。

要了解哪些图像 ID 将被使用,您可以搜索代码或为图像缓存辅助程序记录调用。

如果您永远不需要移除缓存的图片,您可以直接将此命令作为cronjob运行,使用php bin/magento dmc:catalog:images:resize

集合数据预加载

集合数据增强功能将收集并添加在访问列表块时通过单个查询加载的数据

  1. 通过依赖注入添加DMC\Performance\Helper\Catalog
  2. 使用助手方法与您的集合:$this->performanceHelper->attachPreloadDataToCollection($collection);

根据您的代码定制程度,这可以节省相当多的SQL查询。目前它将附加以下数据

  • 层级价格
  • 库存项目(可能不是总是需要的,可能以后会分离)
  • 目录规则价格
  • 分类ID

不会通过此方法添加,但根据您的代码可能有用的东西

  • URL重写
  • 网站ID/名称
  • 通用属性

历史记录

1.0.0

  • 初始版本

1.0.1

  • 针对空分类的修复
  • 添加兼容性
  • 添加LICENCE.md