See also the 2.11 release guide for improvements included in the 2.11 release: 2.11 Release Guide - Performance Improvements Phase I
Considerations already implemented
Support for PayEezy
Token now stored in database, not session
Included in 2.11 and higher (see https://aspenware.atlassian.net/l/c/VQ8Jr5CL )
Schedule Tasks replaced with Azure functions
Delete Guests, Keep Alive, email processing, order processing
Can all be delivered without a release
Requires application service restart
Administration and Fulfillment System Changes
Administrators should not make any changes when scaled out
If an admin makes any change when scaled out, it will only take effect on one application service/site in real time. The other scaled out sites will not be updated with the change until the cache expires on that machine or an action is performed on that machine that causes the cache to clear.
For example, if product inventory is cached for 5 minutes then the longest any machine will have to wait to see updated values is 5 minutes but it could be sooner. Please see Static Cache Guidelines below for information about cache duration.
Some settings, such as Queue-It API key, customer ID, and secret, require an application service restart after any change (whether scaled or not). See Queue-It Release Guide
Customer profile details
If customer profile details are changed in the fulfillment system (RTP|ONE or Siriusware) while the guest is shopping, the changes won’t be seen until the cache is refreshed.
Static Cache Guidelines
24 Hours:
MetaDataTags -> 24 hours
ProductMetaDataTags -> 24 hours
1 Hour:
Settings
30 Minutes:
ProductAttribute -> 30 min per product
TerminalConfiguration -> 30 minutes
By Setting:
Inventory pools (Get Inventory For Month call) -> "ecommercesettings.productinventory.cachetime"
NOTE: In the 2.12 release, coming in late October, inventory will be enhanced so it is no longer retrieved from RTP|ONE.
Dynamic pricing tables: yieldPriceListTable, yieldProductVariantTable, yieldDaysToArrivalTable -> "ecommercesettings.dynamicpricing.cachetime"
Product Inventory (golf specific): -> "GolfSettings.ProductInventory.CacheTime"
Logical:
If catalog setting "CacheProductPrices" is set to true product prices are cached for 60 seconds
1 minute:
ActivityLogType
Category
Category API Call (this call loads the category pages and PDP pages)
CheckoutAttributes
Currency
Customer Household Information (name, birthdate, address, media codes, and gender, legacy contact id)
CustomerRoles
Discount
DiscountRequirement
Does a product have an attribute y/n (cached so we don't call the db to get attributes if the product doesn't have any)
Languages
LocalStringResource (language strings)
LocalizedProperty
PermissionRecord
Picture (table)
ProductCategory
ProductManufacturer
SpecificationAttribute
SpecificationAttributeOption
Store (holds url and language info)
StoreMapping
TaxAddress
TaxRate
Url RecordsWidgets