Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我想优化我的网站上的图像请求_Javascript_Php_Jquery - Fatal编程技术网

Javascript 我想优化我的网站上的图像请求

Javascript 我想优化我的网站上的图像请求,javascript,php,jquery,Javascript,Php,Jquery,我想优化我的网站页面请求 在这里,我得到了21张图片和21个请求 有可能以PHP格式获取21个图像,并在需要时调用它,然后浏览器将其视为仅一个请求< /P> 所以我在单个数组中获取图像,但是当使用tagsrc属性回显它时会发生什么呢 像 “/> " /> " /> " /> . . . " /> 以下是解决方案: 我将图像转换为base64,并将其放入src属性中,它现在可以正常工作http请求计数为reduce如果您想“优化”,您可以使用它来压缩图像并改进Web服务器配置中的缓存。 对于黑

我想优化我的网站页面请求 在这里,我得到了21张图片和21个请求

有可能以PHP格式获取21个图像,并在需要时调用它,然后浏览器将其视为仅一个请求< /P>

所以我在单个数组中获取图像,但是当使用tagsrc属性回显它时会发生什么呢

“/>
" />
" />
" />
.
.
.
" />
以下是解决方案:
我将图像转换为base64,并将其放入src属性中,它现在可以正常工作http请求计数为reduce

如果您想“优化”,您可以使用它来压缩图像并改进Web服务器配置中的缓存。 对于黑魔法,如果你想加载只可见的 您可以尝试(代码未经测试,直接在帖子上键入):

var-imgs=;
window.onresize=
窗台=
window.onload=()=>{
设noloads=document.queryselectoral(“img.no-load”);
为了(让我进入nolaods){
if(im.offsetTop


>代码>有可能在PHP格式中以单个数组获得21个图像并在需要时调用它,然后浏览器将其视为仅一个请求< /代码>否,然后您将发出22个请求;1获得AJAX,然后仍然获得21个图像。无论如何,这不应该是个问题,只要您对图像进行了适当的优化,因为它们是WI。在第一次请求后,将从缓存中读取-如您的屏幕截图所示。大多数请求都需要0毫秒,因为它们来自缓存。您可以在单个请求中以字符串形式返回21个图像的数据,但由于节省了非常少的请求开销,这是一个不必要的复杂性。但我担心的是在@Mars07减少请求计数3如果这个人看不到图像,他就不会发出请求,因此它会发出更少的请求,如果你想得到更少的请求,唯一的解决方案是在精灵中收集图像,然后用css或canvasI转换图像将其剪切成base64,并将其放入src属性中。现在,http请求计数减少@mars073see以上@RoryMcCrossan@John Conde I将映像转换为base64,并将其放入src属性中,它现在可以工作http请求计数减少
<img src"<?php echo img[0]; ?>" />
<img src"<?php echo img[1]; ?>" />
<img src"<?php echo img[2]; ?>" />
<img src"<?php echo img[3]; ?>" />
.
.
.
<img src"<?php echo img[20]; ?>" />
var imgs = <?=json_encode($img)?>;
window.onresize = 
window.onscroll =
window.onload = () => {
    let noloads = document.querySelectorAll("img.no-load");
    for (let im in nolaods) {
        if (im.offsetTop < document.body.scrollTop + window.innerHeight) {
            im.src = imgs[im.dataset.id];
            im.classList.remove("no-load");
        }
    }

};

<img class="no-load" data-id="2" /> <!-- no default src -->