0.0.2 (22.11.2019)• in the module parameters in the "Lazy loading" tab, the option "Date attributes for img tags, the presence of which gives a signal to the mechanism so that the lazy loading mechanism does not touch them (we indicate each date attribute on a new line)" has been added;
• added a list of data attributes built into the mechanism that prevent the image from being repacked for lazy loading: data-skip-parse, data-skip-lazy, data-no-lazy, data-lazy-original, data-lazy-src, data -lazysrc, data-lazyload;
• fixed error in initializing ba.js via javascript;
• a built-in condition has been added under which the mechanism will not work: if the hit we are working on is made through Ajax.
0.0.3 (30.11.2019)• a condition has been added under which the mechanism will not work: if the hit we are working on is executed through a post request;
• the mechanism for moving styles to the end of the document now also transfers inline inclusions, they are placed after -links;
• when saving a Yandex.Metrica script to a local repository, a check for the existence of the repository folder has been added;
• /metrika/cpu.js has been restored in the module assembly, which is responsible for launching the Yandex.Metrica script from the local repository.
0.0.4 (02.12.2019)• in the mechanism for collecting inline style inclusions from a document, the [if lte IE 7] directive embedded in the html commentary is taken into account (without this, the style of the administrative panel with display:none is selected outward and the panel on the page is hidden);
• a parameter has been added to the mechanism for processing and local storage of the Yandex.Metrica counter (module settings, Y.Metrica tab) that allows you to specify the delay in seconds before initializing the tag.js metric script.
0.0.5 (05.12.2019)• support for the Google Tag Manager script has been added: the “Google Tag Manager” tab has been added to the module settings (activity checkbox, delay in seconds, code entry field).
• when the mechanism is activated:
- an agent is created that is responsible for regularly (once a day) checking and updating the local copy of the gtm.js file;
- in the public part, the connection of the script and the Google Tag Manager frame is monitored, the connections found are deleted;
- gtm script is connected from a local copy, according to the delay set in the module settings (from zero to ten seconds).
0.0.6 (13.12.2019)• improved tracking mechanism for lazy loading images and backgrounds;
• the dependence on the settings of Aspro solutions for Yandex.Metrica and Google Tag Manager has been removed: if the corresponding mechanism in the module is activated, other connections are monitored and deleted;
• improved work with autocomposites;
• corrected incorrect work with html comments when the transfer of styles to the end of the document is enabled;
• the fact that style inclusions can occur inside svg tags has been taken into account;
• reading user groups is wrapped in caching.
0.0.7 (14.12.2019)• a parameter has been added to the module settings that allows you to move the “red line” at which lazy loading is triggered beyond the bottom border of the screen. By default, the offset is set to 100 pixels;
• the lazy loading mechanism has been improved: so that a one-pixel (1*1 pixel, which means square proportions) image does not break the layout, if the processed img tag has both width and height specified, both width and height are thrown into the image styles (thus a one-pixel gif takes the form replacement image). But in some situations, because of this, the width and height styles specified in the CSS files cease to be executed, since they cannot override the corresponding parameters set to the element. Forced styles are now cleared when performing lazy loading;
• checkboxes have been added to the module settings that can be used to enable/disable constant tracking of the appearance of elements marked for lazy loading (images, backgrounds, frames). The mechanism is needed when, for example, via Ajax, html code can be delivered to us, parsed by our mechanism and charged to work in tandem with our lazy loading;
• it is taken into account that img can be not only in script tags, but also in picture, pre, code;
• improvements in processing and delivery of Ya.Metrica code to the page;
• a module setting has been added that allows you to control the color of the spinner (which appears when the mechanism for transferring styles to the end of the document is activated).
0.0.9 (13.01.2020)• Fixed a bug in the html parser, which caused the body of the document to be duplicated in some situations.
1.0.1 (18.01.2020)• in the module settings, “Lazy loading” tab, a parameter has been added that can be used to override the data attribute with which lazy loading of images works (by default: data-src).
1.0.3 (19.01.2020)• correction of the default value of the date attribute used in the work when loading images lazily.
1.0.5 (27.01.2020)Moving styles to the end of the document:
• the concept of high-priority styles was introduced. Such styles are published above the rest, after the opening body tag;
• preload mechanisms are used: push technology and rel="preload", depending on whether a composite hit is being produced or not;
• added the ability to disable the loading spinner;
• added the ability to disable page lightening.
Added a parameter that can be used to specify path masks on which the mechanism is allowed to be used. If the parameter is filled in, the mechanism will be launched exclusively on URLs that match the masks.
1.0.6 (04.04.2020)• improved processing of fonts such as Icons or fontAwesome;
• in the processing of fonts and information about available fonts (Module Settings / Fonts), information about the style (normal, italic, bold, ...) has been added;
• incorrect behavior has been taken into account and corrected in situations where the body of the document contains inclusions of html and body tags, which are generated by javascript functions (such as document.write);
• improved processing of lazy loading of background images with Cyrillic or spaces in the name and in cases where the link to the background image is specified in url() without quotes;
• a checkbox has been added that can be used to activate/deactivate the mechanism of high-priority styles and push technology (Module Settings / Style Files, checkbox “Activate the mechanism of high-priority styles and push technology”).
1.0.7 (07.04.2020)• forEach has been removed from the code so that older versions of browsers do not crash with an error;
• added correct processing of Cyrillic domains when checking the list of domains for which the mechanism should be active.
1.0.8 (03.07.2020)• improved processing of photo proportions in the lazy loading mechanism. If the img tag has the width and height attributes specified, the placeholder image will be generated according to the proportions, without using an external file. This approach is highly recommended.
Video: https://youtu.be/z8GTGPNkFdM
• improved mechanism for analyzing the img tag (taking into account the situation in which the tag can be divided by line breaks into several parts) and recognition of skip attributes (attributes that mark the image as one for which lazy loading should not be applied);
• in the module settings, the properties “Urls that are only allowed” and “Urls on which the mechanism should not be launched” have been improved. Now it is possible to get to the URL more accurately through the capabilities of regular expressions. So, for example, if the value is “/$”, the regular expression “^/$” will be compiled and we will catch the URL of the main page (until now, the “/” rule captured all possible URLs);
• the mechanism responsible for the attenuation of the spinner and the illumination of the page has been optimized. The moment when all the fonts have arrived on the page is more accurately captured. Allows you to reduce the likelihood of layout appearing before the styles are processed by the browser (the “broken” layout effect);
• to work in composite mode, the connection of fonts with a timestamp on the tail has been implemented.
1.0.9 (24.07.2020)• the image parser has been improved in preparation for lazy loading: adapted to work with large pieces of code (it crashed with an error) and search performance has been accelerated;
• data-src has been added to the automatic attribute for the parser to ignore preparation for lazy loading, since in cases where other solutions are used or a lazy loading mechanism is already integrated into the project, this attribute is most often used;
• improved font parser. It was possible that the css code of the fonts was incorrectly unpacked into its components and, accordingly, assembled into fonts.css with an error;
• the column for storing the BASE64 code of processed fonts was switched to LONGTEXT (FontAwesome type fonts did not fit);
• improved work in conjunction with the compression module, composite cache, optimized work under conditions of multiple OnEndBufferContent calls.
1.0.10 (28.07.2020)• fixed an error in extending a field type in a database table when the table has not yet been created;
• improved browser agent detection mechanism.
1.0.11 (17.08.2020)• the operation of the module’s js library has been optimized, taking into account the requirements of Google’s web-vitals audits;
• a new feature has been added - setting the correct value for the passive mode of event listeners installed through the Bitrix library (module settings, "BX.bind" tab).
1.0.12 (14.04.2021)• a mechanism for managing the user's private composite key has been introduced (Module Settings / Composite Support / Composite Cache Filtering Mechanism), video with explanations: https://youtu.be/XxvCjN-CcP8;
• it is taken into account that some partner modules use media="print" to speed up the admin panel styles (without this, the admin panel styles were loaded, but not activated, and the impression was created that the panel was broken);
• to the list of global conditions under which the mechanism does not work, a case has been added when a 404 error is thrown on a hit;
• solved a problem in which, due to invalid UTF-8 characters, regular expressions did not work and the lightening of the page when moving styles to the end of the document remained visible;
• the performance of pasting module service code into the page body has been optimized;
• added processing of the data-skip-move="" date attribute of the style tag.
2.1.0 (01.10.2021)!!! After the update, you should resave the module settings!!!
Watch the video: https://youtu.be/_tyVUhiqlgQ
• A mechanism has been introduced for cutting out core assets and publishing them at the beginning of the document, or cutting without publication (for robots). Enabled by default
• Added a checkbox that activates the publication of high-priority styles inline into the body of the document. Enabled by default
• Improved work under composite mode (taking into account the test hit with bxrand).
2.1.1 (01.12.2021)• added a cache flag for calculations that determine whether the mechanism should be launched or not;
• fixed: activated core. The accelerator did not track the general “red button” (activation checkbox and accompanying conditions for launching the entire mechanism);
• js Accelerator Repair Kit: the default action method called (getFull) can be overridden through the options object passed to the method. Also added is the ability to override a method via a data attribute (data-component-action);
• the \Burlakastudio\Speeder\LazyAssetsHelper::pushAssets method in the inline code publishing mode (the third parameter with the value true) now marks the script with the data-skip-moving attribute.
2.1.2 (29.12.2021)• from the conditions under which the mechanism does not start, checking for 404 errors is excluded (defined('ERROR_404'))
• correction of the mechanism for implanting the contents of javascript files, in which "\\\\" was inserted into the document as "\\"
2.1.3 (13.02.2022)Optimization of a script that proxies Ajax requests for lazy loading of components:
• transition to linear mode when receiving a response error (usually due to an outdated CSRF key);
• request re-pusher now stores accompanying options;
• a sent request flag has been added for the component; the re-pusher does not send a repeated request until the flag is cleared.
Module parameter "Do not apply on URLs"
• fixed a bug in which an empty value for this field would cancel the module's operation;
• rules for the URLs "/bitrix/" and "/ajax/" are processed in any case, even if the parameter value is left empty.
2.1.4 (25.04.2022)• Added a checkbox that can be used to switch the delivery mechanism of the lightweight version by user agent (Module Settings, “Management” tab). If the checkbox is activated, the light version begins to be served by the user agent (when HTTP_USER_AGENT contains "Lighthouse").
If the checkbox is disabled (by default), the light version is displayed according to the interface language, that is, when “ru” is present in the list of main browser languages (for php the $_SERVER["HTTP_ACCEPT_LANGUAGE" key is checked], for js window.navigator.languages is checked) . The choice of interface language was discussed on the stream https://www.youtube.com/watch?v=8MWmg0GFfq4.
At the front, you can check under what conditions the page arrived using the values of the keys:
- is the user agent mechanism enabled: BX.message['speeder.light.by.useragent']
- whether the server collected the page as if it were a light version: BX.message['speeder.light.call']
• If the mechanism for unpacking high-priority styles with code directly into the body of the page is activated, push scripts for accelerated loading are not published. Previously, browsers would issue a warning that the script was preloaded but not used in the document.
• The mechanism does not start on post-requests (at least this is one of the many conditions for preventing the mechanism from starting). But authorization is a post-request, at which the mechanism should not stop just because it is a post-request. Accounted for.
2.1.6 (28.12.2022)• Added anti-browser cache to the google tag manager connection
• The mechanism for cutting out core assets has been improved: in order not to break the page code, script files that contain the use of html tags are connected with a link
• Added support for multiple GoogleTagManager counters simultaneously
• Added a method that can be used to force the flag to enable or disable the execution of module mechanisms. Method \Burlakastudio\Speeder\AccessAndStatus::forceSkipReaction. For example, if you need to let the mechanism know that the module’s instrumentation is not needed on a given hit
• Improved support for php 8.1 version