My blog. Where I write about security, performance and much more.| Max Chadwick
Recently a co-worker reported sporadic 500-range errors on a website he was performing testing on. I was trying to gather some information on what was happening and wanted to use the “Network” tab in Chrome DevTools to show me the following requests Only requests to the domain of the specific website (e.g. filter out all 3rd party requests) All non 200 responses Step one I knew how to do…in the filter search enter domain:example.com (replacing example.com with the actual domain for the ...| Max Chadwick
A few weeks back I found myself staring at the following error on a Magento project. TypeError: originalPlaceOrderFunction(paymentData,messageContainer).done is not a function. (In 'originalPlaceOrderFunction(paymentData,messageContainer).done(function(response){if(paymentData.method==='subscribe_pro'){$(document).trigger('subscribepro:orderPlaceAfter',[response]);}})', 'originalPlaceOrderFunction(paymentData,messageContainer).done' is undefined); The error was firing in some cases when the u...| Max Chadwick
Over the past few months I’ve seen reports from multiple clients about problems saving and updating product information on their Adobe Commerce stores. We originally saw the issue back in August and I need to give credit to Nemanja Djuric from Webscale as he was actually the one who identified the root cause.| Max Chadwick
Recently I was investigating an outage on a client website where a large spike in traffic generating a 404 response was at play. Reviewing the requests in detail, I noticed that the same URLs were being hit repeatedly within a short time frame, however the responses never came from cache. This lead me to the question…why wouldn’t a 404 response be served from cache? I reached out to Adobe support and learned a few things. In this post I will share my findings.| Max Chadwick
Recently I was working through an issue on an Adobe Commerce Cloud project where I was interested to see the raw response headers issued by the Magento backend. With Adobe Commerce Cloud, requests are typically routed through Fastly which removes and modifies the origin response headers. My searching and testing wasn’t turning up a solution for my needs. Adobe provides documentation on how to “bypass” Fastly. While this is useful in some cases, such as preventing specific pages from bei...| Max Chadwick
New Relic’s PageViewTiming data set provides excellent visibility into important performance metrics such as Core Web Vitals. When analyzing this data it can be useful to segment it by “page type” — for example, on an ecommerce website it can be helpful to know LCP or CLS scores for the product detail page, or product listing page individually. While it’s possible to view performance metrics for specific page URLs via the default pageUrl field, a website can have thousands (or more)...| Max Chadwick
Recently I was in a bit of a pickle on a new Magento project that my company was taking over. Access to the staging site was restricted via Fastly. I had SSH access to the environment, but my IP address was not allowed via the ACL, so I couldn’t connect to the website’s backend UI to grant myself access. I wound up figuring out how to manage this via the CLI. Since I struggled a bit with figuring this out I figured I’d shared my findings here.| Max Chadwick
Testing for this blog post was done with PHP version 8.2.1 During a recent code review I learned about CURLOPT_FAILONERROR for the first time. I read through both the libcurl documentation as well as the PHP documentation and in the end was still unclear exactly what this option does. In this post I’ll share my findings from some experimentation.| Max Chadwick
A couple weeks back in a Twitter conversation I learned about Partytown. Would you try to leverage the script off the main thread with Partytown?Didn't use myself yet. Curious about your result.https://t.co/49ifl6QX7I— Denis Metzler (@DenisMetzler) December 13, 2022 I was immediately intrigued by the idea and saw great potential, especially on the ecommerce projects that I work on on a daily basis. Today I spent some time playing with Partytown. In this post I’ll share my process and find...| Max Chadwick
There’s a lot to be said about implementing OneTrust Cookie Consent and this post doesn’t intend to cover it all. Instead, I’d like to share my experience with the JavaScript errors that occured when adding the OneTrust Cookie Consent scripts to a production Magento instance. Here’s a screenshot of the errors from the developer tools:| Max Chadwick
Software Developer. Blogger. PHP. Monitoring. Security. Performance.| Max Chadwick
A list of query params used for tracking by various marketing tools| tracking-query-params-registry