Skip to content

Commit 413ebca

Browse files
Merge pull request #1132 from cloudinary/optimize-dpr-values
Optimize the lazy-loading DPR numbers
2 parents 5828b4e + ed1a80d commit 413ebca

File tree

7 files changed

+35
-4
lines changed

7 files changed

+35
-4
lines changed

js/inline-loader.asset.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<?php return array('dependencies' => array(), 'version' => '2814799d655f563dcef8');
1+
<?php return array('dependencies' => array(), 'version' => 'ddf62970fa28de856098');

js/inline-loader.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/lazy-load.asset.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<?php return array('dependencies' => array(), 'version' => 'ded1dd3da3fe93cb64da');
1+
<?php return array('dependencies' => array(), 'version' => '763fff6b35eade3cc6d2');

js/lazy-load.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/js/inline-loader.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { roundToHalf } from './utils';
2+
13
const CloudinaryLoader = {
24
deviceDensity: window.devicePixelRatio ? window.devicePixelRatio : 'auto',
35
density: null,
@@ -151,11 +153,20 @@ const CloudinaryLoader = {
151153
return 1;
152154
}
153155
let deviceDensity = this.deviceDensity;
156+
157+
// Round to nearest 0.5 to reduce URL variations
158+
if ( 'auto' !== deviceDensity ) {
159+
deviceDensity = roundToHalf( deviceDensity );
160+
}
161+
154162
if (
155163
'max' !== maxDensity &&
156164
'auto' !== deviceDensity
157165
) {
158166
maxDensity = parseFloat( maxDensity );
167+
168+
// Round maxDensity to nearest 0.5 to maintain consistency
169+
maxDensity = roundToHalf( maxDensity );
159170
deviceDensity =
160171
deviceDensity > Math.ceil( maxDensity )
161172
? maxDensity

src/js/lazy-load.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { roundToHalf } from './utils';
2+
13
const LazyLoad = {
24
deviceDensity: window.devicePixelRatio ? window.devicePixelRatio : 'auto',
35
density: null,
@@ -73,11 +75,19 @@ const LazyLoad = {
7375
return 1;
7476
}
7577
let deviceDensity = this.deviceDensity;
78+
79+
// Round to nearest 0.5 to reduce URL variations
80+
if ( 'auto' !== deviceDensity ) {
81+
deviceDensity = roundToHalf( deviceDensity );
82+
}
83+
7684
if (
7785
'max' !== maxDensity &&
7886
'auto' !== deviceDensity
7987
) {
8088
maxDensity = parseFloat( maxDensity );
89+
// Round maxDensity to nearest 0.5 to maintain consistency
90+
maxDensity = roundToHalf( maxDensity );
8191
deviceDensity =
8292
deviceDensity > Math.ceil( maxDensity )
8393
? maxDensity

src/js/utils.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/**
2+
* Rounds a number to the nearest 0.5 increment.
3+
* This reduces URL variations for DPR values.
4+
*
5+
* @param {number} value - The value to round.
6+
* @return {number} The rounded value (e.g., 1.666 -> 1.5, 2.3 -> 2.5).
7+
*/
8+
export const roundToHalf = ( value ) => {
9+
return Math.round( value * 2 ) / 2;
10+
};

0 commit comments

Comments
 (0)