July 13, 2020
Enhancements
[ZPD-8991] - Provision To Enable Action Level Concurrent Request Handling
Shopper Experience
Znode now provides a provision to enable action level concurrent request handling. This will allow our clients to use this provision for any action(s) they want.
To implement this enhancement,
Changes were made in Global.asax file
Following files were added:
ActionSessionStateAttribute.cs
SessionStateBehaviorControllerFactory.cs
[ZPD-10643] - Performance: Search/FullTextSearch API Optimization
Shopper Experience
Earlier, Search/FullTextSearch API used to respond slow when configurable products were searched. This was due to an unwanted database call, which has now been removed.
This will not only enhance the performance of the search and PLP but will also reduce the loading time of the search results displayed on the search results page.
To implement this enhancement, changes were made in the GetAssociatedProducts method of PublishProductHelper file.
[ZPD-10431] - Performance: Link Widgets
Shopper Experience
To improve the performance of the product list fetched and displayed in the link widget(s) on the PDP, a cache mechanism is implemented for WebStoreWidget/GetLinkProductList API so that the products available in the widgets can be cached. The products will then be fetched from the cache instead of the database, thereby improving the performance and reducing the loading time of the product list.
To implement this enhancement, changes were made in the following :
cache.config file of Znode.Engine.Api
OnPublishProduct method of ZnodeEventObserver.cs file
Note: The products cached for link widgets will get refreshed whenever any product is published directly or indirectly.
[ZPD-10432] - Performance: Keywords Redirect
Shopper Experience
To improve the performance of the web store search, a cache mechanism is implemented for Search/GetCatalogKeywordsRedirectList API so that the data from the Keywords Redirect can be cached. The data for the redirection URL will then be fetched from the cache instead of the database, thereby improving the performance and reducing the time required for the search to bring the results.
To implement this enhancement,
Changes were made in the following:
cache.config file
CreateSearchKeywordsRedirect, UpdateSearchKeywordsRedirect and DeleteSearchKeywordsRedirect methods of SearchService file
GetCatalogKeywordsRedirectList method of SearchCache file
OnKeywordsRedirectListChange method was added in ZnodeEventObserver.cs file
Note: The cached data from Keywords Redirect will get refreshed whenever any keyword redirect is added, updated, or deleted.
[ZPD-10434] - Performance: Cart Count
Shopper Experience
The count of products available in the cart is calculated and displayed on several pages. Earlier the count always used to get fetched from the database.
With this release, the count will be saved and fetched from the session for scenarios where there is no need for a DB call. This enhancement will not only improve the performance but also the experience of customers (shoppers) visiting the web store.
To implement this enhancement,
Changes were made in the following:
GetCartCount method of CartAgent file
CartCount method of HomeController
ClearCartCountFromSession method was added in CartAgent file
[ZPD-10435] - Performance: Registering All Routes
Shopper Experience
Certain routes were identified which used to call the default route available in the route.config file. Due to which unwanted calls used to get initiated to SEO API, thereby making responses to the web store requests slower.
Therefore to improve the performance of the responses, the entries of such routes were added in the route.config file.
This enhancement has improved the performance of the web store.
To implement this enhancement, changes were made in the following:
Index method of the CategoryController file
RouteConfig.cs
[ZPD-10518] - Performance: JSON Minification
Shopper Experience
Earlier, API used to provide responses for properties with default or null values as well, which were not required. Due to which the size of responses used to increase, causing load on the network.
Therefore to avoid unwanted properties in response, JSON minification is introduced in Znode, which makes responses light. Also when initiating a request to the API, a Minified-Json-Response header will be set in the request and API will return the minified JSON if this header is present in the request.
This enhancement will reduce the load on the network.
To implement this enhancement,
Changes were made in the following:
SetHeaders and SetMinifiedJsonResponseHeader methods of BaseClient file
InsertIntoCache method of BaseCache file
CreateOKResponse method of BaseController file
Global.asax.cs file
Web.config file
Following were added:
MinifiedJsonResponseHeader property and SetMinifiedJsonResponseHeader method were added in of BaseClient file
ToJson method in ApiHelper file
MinifiedJsonResponse property in ZnodeApiSettings file
ZnodeHttpHeaders file
GetHeaderFormattedString and GetHeaderValue methods in ZnodeHttpHeaders file
MinifiedJsonResponse property in ZnodeWebstoreSettings file
CreateOKResponse method in BaseController file
Note: Minified-Json-Response header will be set only for web-store requests
[ZPD-10582] - Performance: Donut Caching For Logged-In Users
Shopper Experience
Earlier, to improve the performance of the web store, a Donut cache mechanism was implemented for all the highly usable web pages (like the home page, product pages, category pages, etc) so that they can be served directly from the cache instead of the database.
This provision was available for guest customers (shoppers) but now will be available for logged in customers (shoppers) as well.
To implement this enhancement, changes were made in the following files:
ZnodePageCache
HomeController
CategoryController
ContentPageController
ProductController
_Layout.cshtml
ProductList.cshtml (for Maxwell’s Hardware theme)
[ZPD-10584] - Performance: Web Store Widgets
Shopper Experience
Ajax calls are used for Home page and product detail page widgets. When these pages are loaded for the first time, all the widgets request data simultaneously, causing the slowness.
Therefore to reduce the loading time and improve the performance of the widgets, non-Ajaxified calls will be initiated in scenarios where Donut caching is enabled.
To implement this enhancement,
Changes were made in:
_Homecontent.cshtml
Event.min.js
The following widgets were converted to WidgetPartialAuto format:
LinkProducts widget
SubCategory (CategoryGrid) widget
A new method WidgetPartialAuto was added in HTMLExtensions.cs file
Note: Ajaxified calls will be initiated when Donut caching is disabled.
[ZPD-10711] - API Cache Durations
Shopper Experience
The cache duration of all keys is set to 60 minutes.
To implement this enhancement, changes were made in the cache.config file of Znode.Engine.API
[ZPD-10779] - CurrentPortalCacheDuration Key Cache Duration
Shopper Experience
The duration of the CurrentPortalCacheDuration cache key is set to 20 minutes.
To implement this enhancement, changes were made in the web.config file of Znode.Engine.Webstore.
[ZPD-10851] - Performance: Published Category List Details
Shopper Experience
To improve the performance of the category list details, a cache mechanism is implemented for PublishCategory/List API so that the category list details are cached. The details will then be fetched from the cache instead of the database, thereby improving the performance and reducing the loading time of the published category list details.
To implement this enhancement, changes were made in the cache.config file of Znode.Engine.API
Note: The data cached will get refreshed whenever any category is published directly or indirectly.
[ZPD-10778] - Performance: SearchAgent.GetSeoUrlDetail Method Optimization
Shopper Experience
The SearchAgent.GetSeoUrlDetail method is optimized so that unnecessary calls to the API can be avoided when registered users log in to the web store.
This enhancement has improved the performance of the web store in cases of slug URLs.
To implement this enhancement, a new property searchClient was added and used instead of _searchClient in SearchAgent file.
[ZPD-10842] - Performance: Published Category Details
Shopper Experience
To improve the performance of the category details, a cache mechanism is implemented for PublishCategory/GetPublishCategory API so that the category details are cached. The details will be then fetched from the cache instead of the database, thereby improving the performance and reducing the loading time of the published category details.
To implement this enhancement, changes were made in the cache.config file of Znode.Engine.API
Note: The data cached will get refreshed whenever any category is published directly or indirectly.
[ZPD-10327] - Performance: Data From ERP Connector On Webstore
Shopper Experience
Earlier, all the information from the ERP Connector used to get fetched from the database and then used to get displayed on the web-store.
To improve the performance of the web store, caching is implemented for information fetched through ERP so that if the required data is available in the cache, the web store will fetch the data from there instead of the database. This has improved the performance and the page loading time of the web store.
To implement this enhancement,
GetActiveERPConfigurationFromCache method was added in ERPConfiguratorService.cs file
Changes were made in the following:
GetActiveERPClassName, GetActiveERPClassId and GetERPClassName methods of ERPConfiguratorService
cache.config file
Here is the API path: ERPConfigurator/GetActiveERPClassName
Important: It is essential to clear the API cache when changes are made in ERP configurations from the Znode admin application.
[ZPD-10324] - Performance : Permanent URL redirections
Shopper Experience
Earlier, all the information from the GetUrlRedirectList method (UrlRedirect controller) used to get fetched from the database and then used to get displayed on the web-store.
To improve the performance of the web store, caching is implemented for information fetched through the GetUrlRedirectList method, so that if the required information is available in the cache, the web store will fetch the permanent URL redirections from there instead of the database. This has improved the performance and the page loading time of the web store.
To implement this enhancement, changes were made in the cache.config file.
Here is the API path: UrlRedirect/GetUrlRedirectList
Important: It is essential to clear the API cache when any changes are made in 301 URL Redirects from the Znode admin application.
[ZPD-10325] - Performance: Search
Shopper Experience
All the catalog related information searched on the web-store uses the GetSEOUrlDetails method.
Earlier, all the information from the GetSEOUrlDetails method (Search controller) used to get fetched from the database and then used to get displayed on the web-store.
To improve the performance of the web store, caching is implemented for information fetched through the GetSEOUrlDetails method, so that if the required information is available in the cache, the web store will fetch the data from there instead of the database. This has improved the performance and the page loading time of the web store.
To implement this enhancement, changes were made in the cache.config file.
Here is the API path: Search/GetSEOUrlDetails
Important: It is essential to clear the API cache when any changes are made in the SEO Friendly URL of products and categories from the Znode admin application.
[ZPD-10326] - Performance: Store Experience Data
Shopper Experience
Earlier, all the information from the GetDisplaySetting method (Portal controller) used to get fetched from the database and then used to get displayed on the web-store.
To improve the performance of the web store, caching is implemented for information fetched through the GetDisplaySetting method, so that if the required information is available in the cache, the web store will fetch the store experience information from there instead of the database. This has improved the performance and the page loading time of the web store.
To implement this enhancement, changes were made in the cache.config file.
Here is the API path: Portal/GetDisplaySetting
Important: It is essential to clear the API cache when any changes are made in the Store Experience of products and categories from the Znode admin application.
[ZPD-10328] - Performance: Catalog Data
Shopper Experience
All the calls initiated to fetch CatalogId were made for the database.
To improve the performance of the web store, caching is implemented for such scenarios, so that if the required information is available in the cache, the web store will fetch the information from there instead of the database.
To implement this enhancement,
GetPortalListFromCache, GetPortalPublishCatalogFromCache and GetPortalPublishCatalogFromCache methods were added in the BaseService.cs file.
Changes were made in GetUserPortal, GetPortalCatalogId and GetAvailablePortals methods of BaseService.cs file.
Important: It is essential to clear the API cache when any changes are made in the store URLs or when the store assignments of users are changed.
[ZPD-10331] - Performance: SEO Details From Web Store Cache
Shopper Experience
Earlier, to get the SEO information, the web-store used to initiate a call to check whether the required information is available in the API cache.
To improve the performance of the web store, the information will now be checked in the web store cache, so that the unnecessary call initiated to API can be eliminated.
To implement this enhancement,
GetSeoUrlDetailFromCache and GetSEODetailsFromAPI methods were added in SearchAgent.cs file
Changes were made in the GetSeoUrlDetail method of the SearchAgent.cs file.
Important: It is essential to clear the API cache when any changes are made in the SEO Friendly URL of products and categories from the Znode admin application.
[ZPD-10329] - Performance: Domain Information From Cache
Shopper Experience
Earlier, authorized domains for users in business frameworks were checked directly from the database.
To improve the performance of the web store, the information will now be cached so that if the required information is available in the cache, the web store will fetch the information from there instead of the database.
To implement this enhancement, changes were made in the GetAutorizedDomain method of the ZnodeConfigManager.cs file.
Important: It is essential to clear the API cache when any changes are made in the store URLs or when the store assignments of users are changed.
Issues Resolved
[ZPD-10611/ZLMC-1347] - Web Store - When an item is added via the Quick Order pad, and then the shopping cart is updated, all products available in the shopping cart used to get removed.
To resolve this issue, changes were made in the CreateCart method of the CartAgent file.
[ZPD-10985/ZLMC-1456] - Duplicate content was getting displayed in Site Map when two same URLs were added under store with and without www.
To resolve this issue, changes were made in Znode_GetProductFeedList,Znode_GetContentFeedList and Znode_GetBlogFeedList & Znode_GetCategoryFeedList stored procedures.
[ZPD-11043] - Admin - Maxwell’s Hardware & Maxwell’s Fine Foods Themes - Configure button was not getting displayed for configuring Slider and Advertisement Banner in Home Content under Store Experience.
To resolve this issue, changes were made in ExtractFromString method of WidgetHelper.cs file