I am writing to report a critical performance issue that seems to have started after upgrading WPML Multilingual & Multicurrency for WooCommerce to version 5.5.5, which I have traced to a change in how WCML injects multi-currency price cache HTML into price strings.
## The Problem
My wp_woocommerce_sessions database table grew from ~1-2GB to over 4GB within a short period, with ~65,000 entries. Each session entry is approximately 115KB in size, whereas previously sessions were a few KB each.
## Root Cause Identified
After analyzing the raw session data in the database, I found that each session contains a key called fs_free_shipping_notice (written by the Flexible Shipping plugin). Inside this key, WCML is injecting a wmc-price-cache-list HTML blob containing pre-rendered price strings for every single supported currency (~100 currencies), for every price threshold value.
For a single $100.00 free shipping threshold, WCML is generating and storing a full HTML price string for all ~100 currencies (USD, EUR, CHF, GBP, PLN, AED, KRW, JPY, CNY, AUD, CAD, NOK, SEK, DKK, CZK, AFN, ALL, AMD... and so on). This alone accounts for ~115KB per session entry.
## This Is a Recent Regression
This behavior started approximately after upgrading WPML Multilingual & Multicurrency for WooCommerce - it was NOT happening before. Session sizes were normal prior to this.
## Evidence
Here is a sample of the bloated data structure stored in each session. The wmc_price_cache attribute inside the price HTML contains pre-rendered strings for every currency:
<span data-wmc_price_cache="{"USD":...,"EUR":...,"CHF":...[~100 more currencies]}">
I have also contacted Flexible Shipping support, but since the oversized data originates from WCML's currency cache injection, I believe the fix needs to come from the WCML side.