Closed pkarw closed 4 years ago
@andrzejewsky @cewald @ResuBaka @gibkigonzo @haelbichalex @grimasod - please feel free to pick up some of these tasks as well as just share your comments/feedback/other ideas?
We decided to have the 1.12rc1 just all about the performance optimization
There is no doubt that these are highly needed changes and will be a great improvement to vue storefront but I can already see the hell of upgrading a customized projected to 1.12 :/ A comprehensive guide and preferably some migration accelerating tools would be welcomed.
Personally I would add https://github.com/DivanteLtd/vue-storefront/issues/3819 as high priority to that list and it's something I will try to take care of.
@lukeromanowicz cool - putting #3819 on the list; which tasks from the list you're afraid of regarding the upgrade path? I guess the High priority
list doesn't consist any of non-b/c changes (i tried no to put any of those on it) even removing bodybuilder
is not a b/c break as you as a developer can always import it
Mainly I am afraid of:
It might be safe for some projects where no custom es structures/mappings/filters are done but in other scenarios, it's gonna be a pain
@lukeromanowicz understandable, we'll try to minimize BC-breaks / use deprecates instead.
@pkarw I think this one: https://github.com/DivanteLtd/vue-storefront/pull/3919 should be on that list because it's also part of 1.12, maybe it's not optimization itself but there are changes in webpack that might also reduce a bundle sizes etc.. and I think that will be the first thing what we will be working on when it comes to 1.12rc1.
You’re tight we need to be careful- I guess we should have - as awkward it sounds - config vars to enable this new behavior / or implement it as switchable modules / or at last have a upgrade docs with a notes how to get the prev. behavior up and running
Anyway - I’m almost sure we can achieve 100% backward compatibility with the current Vuex actions. There will be a case - as you described - if anyone override any action we’ll affect during the optimization. There should be docs for that case
But on the other hand I’ve got a feeling we can optimize VSF bundle size and page speed results at least by 30% without any major architecture changes (the listed changes are minor or medium impact changes still based on current general approach - Vuex etc) so I guess it’s worth doing?
Removing the bodybuilder package should not be so hard as we can just send the contend of content of SearchQuery
(_availableFilters,_appliedFilters,_searchText) to the api and with that we can build the query. As you normally would not use the bodybuilder
directly it should be transparent to the user. They only need to know that they need to update the API. So in the end it would only be a b/c change when you want to use the VSF 1.12 with the API on version 1.11.
But a better way would be that we move that change to a new adapter package and then have a config on the API side to enable the bodybuilder
there, for the new search adapter.
Another idea for optimization:
optimization: {
splitChunks: {
chunks: 'all'
}
},
As for now i think the #3963 and #3706 along with #2232 will provide us with the highest performance impact
@gibkigonzo we need to make sure that https://github.com/DivanteLtd/magento2-vsbridge-indexer and https://github.com/DivanteLtd/magento1-vsbridge-indexer are ready for #3948 - check it with @afirlejczyk please
What is the motivation for adding / enhancing this feature?
I've just decided to put a short note on the priorities over-optimization tasks we've planned for 1.12rc1. Not all of them have the same impact - therefore the same priority:
High priority - high impact, no breaking changes, pretty obvious things to do
storefront-api
orvue-storefront-api
or both); potentially will save up to 500kb bundle size (bodybuilder package); it should be potentially a separate package as both:storefront-api
andvue-storefront-api
projects are using the sameSearchQuery
+SearchAdapter
interfacesdefault-optimized
theme with limited feature set - related to #2232 -> this theme is https://github.com/DivanteLtd/vsf-capybaragraphql
to by dynamically loaded +bodybuilder
to be removed are key priorities; remove unused importsrequest_cache
forvue-storefront-api
orstorefront-api
callsMedium priority - lower, or unknown impact, potentially breaking changes or need analysis
attribute/list
call and remove the usage ofattribute
metada dictionary on the frontend.translation.processor
to process only the language files that are in usecatalog
business logic - not sure if there will be a direct performance benefit from this simplification but it should be pretty ok to simplify the core codebase making it easier to maintain VSF - the other thing is that we should be very careful of the backward compatibility of this changeOther - other tasks, sometimes not 100% related to the performance ;)
breadcrumbs
are set - mostly for the PDP but probably for PLP as well