Token导航 LogoToken导航TokenDH.com
研究检索需要联网github未标认证来源可访问许可证需确认审计提醒

magento-indexing-cachingmagento 索引缓存

Agent Skill

magento-indexing-caching 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

465

周安装

19

GitHub Stars

19

下载量

150
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:magento-indexing-caching(magento 索引缓存)
来源仓库:https://github.com/finsilabs/awesome-ecommerce-skills
仓库路径:skills/magento-indexing-caching
安装命令:
npx skills add https://github.com/finsilabs/awesome-ecommerce-skills --skill magento-indexing-caching
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/finsilabs/awesome-ecommerce-skills --skill magento-indexing-caching

简介

用于查找、检索和筛选相关信息。magento-indexing-caching 属于研究检索类 Skill,可作为该场景下的辅助能力补充。

  • 适合根据关键词或任务场景快速定位候选结果。
  • 可结合来源仓库和 README 核验具体用法。
  • 安装前建议确认权限范围和维护状态。
  • 注意是否会触发联网或命令执行。

SKILL.md

Magento Indexing and Caching

Overview

Magento's performance architecture relies on two distinct layers: indexers that pre-compute denormalized data (product prices, search indexes, category paths) into flat tables, and the Full-Page Cache (FPC) that stores complete rendered HTML pages. Varnish is the recommended FPC backend for production, replacing Magento's built-in file-based cache. Redis is the recommended backend for application cache, session storage, and the default cache (block HTML, config, layout). Misconfigured or stale indexes are one of the most common causes of incorrect pricing and product visibility issues.

When to Use This Skill

  • When products appear with wrong prices or are invisible after catalog updates
  • When implementing Varnish for the first time on a Magento production server
  • When diagnosing slow category page loads caused by on-the-fly price calculation
  • When configuring Redis for Magento's session and block cache storage
  • When setting up cache invalidation after catalog or CMS updates via Magento's cache tags
  • When managing indexer schedules on large catalogs (> 50,000 products) to prevent full reindex locking

Core Instructions

  1. Understand Magento's indexers and their modes # List all indexers and their status bin/magento indexer:info bin/magento indexer:status # Example output: # catalog_category_product Category Products valid Update on Save # catalog_product_category Product Categories valid Update on Save # catalog_product_price Product Price invalid Update by Schedule # catalogsearch_fulltext Catalog Search valid Update by Schedule # catalogrule_product Catalog Rule Product invalid Update on Save Set all production indexers to Update by Schedule mode to prevent checkout blocking: bin/magento indexer:set-mode schedule catalog_category_product bin/magento indexer:set-mode schedule catalog_product_price bin/magento indexer:set-mode schedule catalogsearch_fulltext bin/magento indexer:set-mode schedule catalog_product_flat bin/magento indexer:set-mode schedule catalog_category_flat # Verify modes bin/magento indexer:show-mode
  2. Manage indexers and partial reindexing # Reindex a single indexer (less disruptive than full reindex) bin/magento indexer:reindex catalog_product_price # Reindex all (avoid on production during business hours) bin/magento indexer:reindex # Reset indexer to "invalid" to force next scheduled run bin/magento indexer:reset catalog_product_price # Check mview (materialized view) changelog tables — lists pending rows to process bin/magento indexer:show-changelog For very large catalogs, use parallel indexing: # app/etc/env.php — enable parallel processing # In Admin → System → Index Management → Indexers → Configure # Or via config: bin/magento config:set dev/grid/async_indexing 1 <?php // app/etc/env.php return [//... 'indexer' => ['batch_size' => ['catalog_product_price' => ['simple' => 200, 'configurable' => 50], 'catalogsearch_fulltext' => ['simple' => 500],],],];
  3. Configure Varnish as Full-Page Cache # In Admin → System → Configuration → Advanced → System → Full Page Cache # Set Caching Application: Varnish Cache # Export Varnish configuration: bin/magento varnish:vcl:generate --export-version=6 --output-file=/etc/varnish/magento.vcl Key sections of the generated VCL to understand: # /etc/varnish/magento.vcl (excerpts from generated config) sub vcl_recv {# Do not cache if private cookie is set (logged-in customer) if (req.http.cookie ~ "X-Magento-Vary=") {# Magento sets this cookie to vary cache by context (customer group, currency) # The cookie value changes only when the context changes — not per session} # Strip _ga, fbclid, utm_* params from cache key to prevent cache fragmentation set req.url = regsuball(req.url, "(\?|&)(utm_[^&]+|fbclid|gclid|mc_[^&]+)(&|$)", "\1");} sub vcl_hash {# Include Magento's context cookie in the cache hash if (req.http.cookie ~ "X-Magento-Vary=") {hash_data(regsub(req.http.cookie, ".*X-Magento-Vary=([^;]+).*", "\1"));}} sub vcl_backend_response {# Respect Magento's Cache-Control headers if (beresp.http.Cache-Control ~ "no-store") {set beresp.uncacheable = true; set beresp.ttl = 120s;} # Strip Set-Cookie on cacheable responses if (beresp.ttl > 0s) {unset beresp.http.set-cookie;}}
  4. Configure Redis for application cache and sessions <?php // app/etc/env.php — Redis cache and session configuration return ['cache' => ['frontend' => ['default' => ['id_prefix' => 'b0c_', 'backend' => 'Magento\\Framework\\Cache\\Backend\\Redis', 'backend_options' => ['server' => '127.0.0.1', 'database' => '0', 'port' => '6379', 'password' => '', 'compress_data' => '1', 'compression_lib' => 'gzip', 'persistent' => 'mgto_cache',],], 'page_cache' => ['id_prefix' => 'b0c_', 'backend' => 'Magento\\Framework\\Cache\\Backend\\Redis', 'backend_options' => ['server' => '127.0.0.1', 'database' => '1', // Separate DB for FPC 'port' => '6379', 'compress_data' => '0', // FPC data is already compressed HTML],],],], 'session' => ['save' => 'redis', 'redis' => ['host' => '127.0.0.1', 'port' => '6379', 'password' => '', 'timeout' => '2.5', 'persistent_identifier' => 'mgto_sessions', 'database' => '2', // Separate DB for sessions 'compression_threshold' => '2048', 'compression_library' => 'gzip', 'log_level' => '1', 'max_concurrency' => '6', 'break_after_frontend' => '5', 'max_lifetime' => '7200', 'disable_locking' => '1', // Improves performance but reduces session safety],],];
  5. Implement cache tag invalidation for custom modules Magento uses cache tags to selectively invalidate cached pages when data changes. Custom modules should tag and clean caches properly: <?php // Declare cache tags in your block/model namespace MyVendor\CustomModule\Block; use Magento\Framework\View\Element\Template; use Magento\Framework\DataObject\IdentityInterface; class CustomProductWidget extends Template implements IdentityInterface {private array $productIds = []; public function getIdentities(): array {// Return cache tags so Magento invalidates this block when any of these products change $tags = [\Magento\Catalog\Model\Product::CACHE_TAG]; foreach ($this->productIds as $id) {$tags[] = \Magento\Catalog\Model\Product::CACHE_TAG. '_'. $id;} return $tags;}} <?php // In your observer or command — flush only relevant pages after product update namespace MyVendor\CustomModule\Observer; use Magento\Framework\Event\ObserverInterface; use Magento\Framework\App\Cache\TypeListInterface; use Magento\PageCache\Model\Cache\Type as PageCacheType; class ProductSaveObserver implements ObserverInterface {public function __construct(private readonly TypeListInterface $cacheTypeList, private readonly \Magento\Framework\App\Cache\Tag\Resolver $tagResolver) {} public function execute(\Magento\Framework\Event\Observer $observer): void {$product = $observer->getEvent()->getProduct(); // Invalidate only pages tagged with this product's cache tag // Varnish will purge via PURGE request using X-Magento-Tags-Pattern header $this->cacheTypeList->invalidate(PageCacheType::TYPE_IDENTIFIER);}}

Examples

Diagnose index lag causing wrong prices

# Check if mview changelog has pending rows
bin/magento indexer:show-changelog

# If catalog_product_price has > 0 pending rows, prices are stale
# Run the indexer to catch up
bin/magento indexer:reindex catalog_product_price

# Check cron_schedule table for missed cron jobs (should run indexers every minute)
bin/magento cron:run --group index &
# Or manually via:
mysql -u root -e "SELECT job_code, status, finished_at FROM magento.cron_schedule WHERE job_code LIKE '%index%' ORDER BY finished_at DESC LIMIT 20;"

Warm FPC after deployment

#!/bin/bash
# scripts/warm-cache.sh — warm the FPC after deploy
set -e

MAGENTO_BASE_URL="https://www.mystore.com"
SITEMAP_URL="$MAGENTO_BASE_URL/sitemap.xml"

echo "Flushing Magento caches..."
bin/magento cache:flush

echo "Warming FPC via sitemap..."
# Download sitemap and curl each URL with a warm-cache header
curl -s "$SITEMAP_URL" | \
  grep -oP '<loc>\K[^<]+' | \
  head -500 | \
  xargs -P 10 -I {} curl -s -o /dev/null -w "%{http_code} {}\n" \
    -H "X-Warm-Cache: 1" {}

echo "Cache warming complete."

Best Practices

  • Always use Update by Schedule mode in productionUpdate on Save reindexes synchronously during admin saves, causing timeouts on large catalogs
  • Separate Redis databases for cache, FPC, and sessions — using database 0 for everything causes key conflicts and makes it impossible to flush only one type
  • Tag custom blocks with IdentityInterface — this ensures Varnish and Magento's FPC invalidate the right pages when your data changes
  • Monitor indexer changelog table sizes — a catalog_product_price_cl table with millions of rows indicates cron is not running; fix cron before the table size causes reindex timeouts
  • Use bin/magento cache:clean vs cache:flushclean removes only invalid cache entries (safe); flush nukes everything including other framework caches sharing the same Redis
  • Set distinct id_prefix per environment — staging and production can share a Redis server if each has a unique prefix, preventing cache poisoning
  • Test Varnish with curl -I and X-Cache header — a HIT response confirms Varnish is serving from cache; MISS means it's hitting Magento for every request

Common Pitfalls

ProblemSolution
Products invisible or wrong price after importRun bin/magento indexer:reindex after bulk imports — programmatic product saves don't always trigger indexer if using ResourceModel\Product::save directly
Varnish serving stale pages for logged-in customersEnsure X-Magento-Vary cookie is in the Varnish VCL hash; logged-in customers get a different vary value that bypasses the shared cache
Redis running out of memorySet maxmemory-policy allkeys-lru in redis.conf for cache databases; for session database use noeviction to prevent silent session loss
FPC not invalidating after product saveCheck that Varnish's PURGE ACL allows requests from the Magento server's IP; test with curl -X PURGE http://varnish-ip/
Full reindex takes hours and locks tablesEnable indexer batch sizes in env.php and run with --mode realtime for partial reindexing; schedule during off-peak windows
Cron indexers not runningCheck var/log/magento.cron.log for errors; verify the system crontab entry runs bin/magento cron:run every minute as the web server user

Related Skills

  • @magento-module-development
  • @magento-graphql
  • @magento-multi-store
  • @caching-strategies
  • @infrastructure-performance

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

36.39%
按下载量换算55

Claude

29.99%
按下载量换算45

Cursor

19.34%
按下载量换算29

Gemini CLI

9.19%
按下载量换算14

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

可疑

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills