延迟加载是计算机编程中常用的设计模式,用于将对象的初始化推迟到需要它的点。
ConcurrentDictionary + Lazy——实例化只会发生一次吗?
场景 假设我们有: var 字典 = new ConcurrentDictionary>(); 实例化 Heavy 非常消耗资源。让我们考虑一下这段代码: 返回字典。
我试图将我所有的数据库变成延迟加载,因为它太大了(像数百万), 为了不加载所有内容,我应用了惰性,并开始进行 Spring Projections, 然后,在项目中...
我用这段代码实现了延迟加载: (函数(w,d){ var b = d.getElementsByTagName('body')[0]; var s = d.createElement("脚本"); var v = !("</desc> <question vote="0"> <p>我已经用这段代码实现了<a href="https://verlok.github.io/vanilla-lazyload/" rel="nofollow noreferrer">延迟加载</a>:</p> <pre><code><script> (function(w, d) { var b = d.getElementsByTagName('body')[0]; var s = d.createElement("script"); var v = !("IntersectionObserver" in w) ? "8.17.0" : "10.20.1"; s.async = true; s.src = "https://cdnjs.cloudflare.com/ajax/libs/vanilla-lazyload/" + v + "/lazyload.min.js"; w.lazyLoadOptions = { elements_selector: '.lazy', threshold: 250 }; b.appendChild(s); }(window, document)); </code></pre> <p>图片:</p> <pre><code><img class="mimg lazy" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEHAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://example.com/photos/galeries/11992/11992_3.jpg" data-srcset="https://example.com/photos/galeries/11992/11992_3.jpg 650w, https://example.com/photos/galeries/11992/11992_xxl_3.jpg 1600w" sizes="(max-width: 992px) 650px, (min-width: 993px) 1600px, 650px" width="650" height="433" alt="Alt text" /> </code></pre> <p>问题是它总是加载最大的图像xxl。</p> <p>我不知道为什么它不加载小图像,例如在移动设备中。</p> <p>谢谢你</p> </question> <answer tick="false" vote="0"> <p>最后我可以修复它,包括</p>之间的img </answer> </body></html>
是否可以在客户端同时使用 - ssr 和延迟加载图像。这是我的情况。我的标记是用 img[src] 渲染的,在我的 chrome 浏览器中按 ctrl+U 可以看到所有图像...
Angular 独立组件(使用 LoadComponent)- 延迟加载服务不工作
服务无法在组件中运行。并且控制台上没有错误。保持组件继续加载。当我从组件中删除服务时,它开始正常工作。有一些问题...
我想快速解释一下情况。本质上,我创建了一个 Livewire 组件,它允许我从无线电 API 获取数据来获取歌曲。这些歌曲每 3 分钟更换一次,我想要
延迟加载Adsense Ads有什么工作方法吗? 我在堆栈溢出和谷歌中检查了一些答案,所有这些方法都只是延迟加载,我只需要在广告可见时加载广告...
我们的项目使用 astrotomic/laravel-translatable 库在 Laravel 9 中进行翻译。问题是加载翻译的第二级关系(例如 hasMany)不会懒惰地执行...
我有 2 个下拉菜单 - 名称和标签。 目前,数据存储在缓存(dcc.Store)中,我根据下拉值进行回调,并返回一个容器,其中过滤后的 df 为 df_co...
我想延迟加载我的组件,以减少我的初始包大小,并使用反应路由器使用代码分割来动态获取组件。 然而,当使用 React Suspense 时,它们会强制你使用
在此存储库中:https://github.com/tlg-265/react-app-vanilla $ git 克隆 https://github.com/tlg-265/react-app-vanilla $ cd 反应应用程序香草 $ 纱线 $ 纱线开始 我有一个只有 3 页的虚拟应用程序:{
我有这个代码(减少了重现的最小值): 我有这个代码(减少了重现的最低限度): <div style="overflow:hidden;height:160px;width:160px;border:4px solid red;position:relative;"> <img src="https://josefkorda.cz/img/sluzby-koncerty.jpg" loading="lazy" style="height:100%;position:absolute;top:0;left:-1px;"> </div> 图像(红色边框)是通过 loading="lazy" 本机延迟加载的。 问题是,直到我更改 css 中的一些 DevTools 或删除代码中的 loading="lazy" 属性后,图像才会加载。 它开始工作,如果: left:0 用于图像或 overflow:hidden 已删除或 loading="lazy"已删除 这里是实时示例的链接(更新:通过为图像提供尺寸,问题在示例中不再可见) 这是示例图像,其中第一个带有图像的圆圈是它应该的样子,以及没有 loading="lazy" 时它的工作原理。接下来的圆圈(图像)是有问题的圆圈,其 loading="lazy" 标签中带有 img 属性。 我最近也遇到了这个问题,当你添加 CSS 样式“宽高比”时,它似乎可以自行解决 万一有人遇到这个问题,主要原因是我的用例溢出:剪辑;父溢出被隐藏(我不知道为什么)。解决了问题。
在我的项目中我想使用CKEditor5。问题是,这个版本与 IE11 不兼容,所以我的目标是延迟加载 CKEditor5 组件,当检测到 IE11 时,我不想简单地加载这些
我想使用视频作为我网站的背景。我有这个: 我想使用视频作为我网站的背景。我有这个: <video autoplay muted loop preload="none" poster="{{ asset('img/web/intro_video_placeholder.webp') }}" loading="lazy"> <source src="{{ asset('img/web/video/intro_video.webm') }}" type="video/webm"> </video> 它工作得很好,但我想要实现的是延迟加载。我想先加载 css 和 js,然后开始加载视频,而且,如果加载了视频,我想自动播放它。 上面的代码无法正常工作,并且它会在慢速互联网连接上阻止我的 css 和 js(视频大约有 9MB)。 有什么解决办法吗?非常感谢。 你的代码看起来不错。但有一个小小的改变。如果存在 preload,则忽略 autoplay 属性。 document.addEventListener("DOMContentLoaded", function() { var lazyVideo = document.getElementById('lazyVideo'); // Function to play the video }); <video id="lazyVideo" muted loop preload="none" poster="{{ asset('img/web/intro_video_placeholder.webp') }}" loading="lazy"> <source src="{{ asset('img/web/video/intro_video.webm') }}" type="video/webm"> </video>
我可以使用另一个惰性组件作为<Suspense />后备吗?
我有一个sdk,需要延迟加载组件及其骨架。所以我实现了如下代码: const lazySkeleton = React.lazy(() => import('@my-sdk/skeleton')); const lazyComponent = React.la...
在 Hibernate 会话期间,我正在加载一些对象,其中一些对象由于延迟加载而作为代理加载。一切都好,我不想关闭延迟加载。 但稍后我需要发送...
PrimeNG p-table 延迟加载在没有额外“点击”的情况下不会更新
我在一个延迟加载的项目中使用primeNG的p表。 但我在加载表格时遇到了一个问题,没有额外的“点击”。 在我的模板中,我有: 我在一个延迟加载的项目中使用 primeNG 的 p-table。 但我在加载表格时遇到了问题,没有额外的“点击”。 在我的模板中,我有: <p-table [value]="products" [totalRecords]="totalRecords" [tableStyle]="{ 'min-width': '50rem' }" [paginator]="true" [rows]="10" [showCurrentPageReport]="true" [rowsPerPageOptions]="[5,10,20]" [lazy]="true" (onLazyLoad)="loadProducts($event)" > 在我的组件中我有: products: ProductDTO[] = []; totalRecords : number = 5 ... loadProducts(event : TableLazyLoadEvent){ console.log(event); this.projectsOverviewService.getProducts() .subscribe((response:PagedListDtoOfProductDTO)=> { this.products = response.items; this.totalRecords = response.totalRecords; console.log("loaded products"); }); } 我已验证正在设置产品和总记录。 但我的表没有更新。仅当我单击分页器的下拉菜单时,才会呈现产品。 我也尝试将它与 OnInit 结合起来,但这也不会加载它。 仅当我仅使用 OnInit 方法并删除lazy="true" 和 onLazyLoad 时,我的表才能正确呈现。 我还尝试在其周围的额外容器中使用 observable 并将 *ngIf 与异步管道一起使用,但不起作用,因为 OnInit 方法(填充初始产品 observable 所必需的)不能与 OnLazyLoad 一起使用方法(它不断触发 TableLazyLoadEvents) 我已经找到问题了,根据给定的信息你是不可能知道的。 在我的 component.ts 中我已经配置了 @Component({ ... changeDetection: ChangeDetectionStrategy.OnPush }) 将其更改为 @Component({ ... changeDetection: ChangeDetectionStrategy.Default }) 解决了我的问题
我想尝试基于本机浏览器的延迟加载,而不是我当前使用的基于 JS 的方法,因为这些天加载=“lazy”属性得到了很好的支持:caniuse加载
PagespeedInsights 即使在延迟加载图像时也会显示延迟屏幕外图像?
PageSpeedInsights 显示延迟屏幕外图像,即使下面的图像是延迟加载的 PageSpeedInsights 显示延迟屏幕外图像,即使下面的图像是延迟加载的 <img data-src="https://www.healinghandsclinic.co.in/images/successfull-stories/australian-Patient.jpg" alt="" title="" class="img-responsive lazyloaded" src="https://www.healinghandsclinic.co.in/images/successfull-stories/australian-Patient.jpg"> 有人可以解释一下上面的代码是什么意思,特别是这部分吗: class="img-responsive lazyloaded" 如何推迟此图像? 推迟这张图片 <img data-src="https://www.healinghandsclinic.co.in/images/successfull-stories/australian-Patient.jpg" alt="" title="" class="img-responsive lazyloaded" src="https://www.healinghandsclinic.co.in/images/successfull-stories/australian-Patient.jpg"> 如果此代码片段直接来自服务器端渲染的 HTML,则 src 属性值和 data-src 属性是相同的。 这意味着浏览器将立即开始获取 src 资源: https://www.healinghandsclinic.co.in/images/successfull-stories/australian-Patient.jpg 如果该图像在视口内不可见(如 Lighthouse 使用的),它最终仍将与其他(图像和非图像)资源竞争带宽。 因此 PageSpeed Insights (PSI)/Lighthouse 建议推迟屏幕外图像。 但是,考虑到图像元素上使用的 CSS 类 (class="img-responsive lazyloaded"),您共享的代码片段实际上可能是某些延迟加载 JS 库加载图像后的最终结果。 与上面相同的理论仍然适用:初始后备图像(可能只是图像的低质量版本或 1x1 占位符)可能最终被下载,这是 PSI 发现的。 如果没有其他信息,很难说哪张图片最初是由 PSI 发现的。 解决方案 无论您的情况如何,这里都有一个两步最佳实践和解决方案: 删除你的 JS 延迟加载库; 然后使用本机延迟加载(这仅意味着向您的 loading="lazy" 添加 <img> 属性); 将 CSS bg 图像(如果有的话)更改为 <img> 可能会很方便,因为这会给你更多的加载选项/控制 由于使用本机延迟加载允许您删除 JavaScript,因此它将提高您的 JS 性能以及 TBT(实验室数据/Lighthouse 指标)和 INP(现场数据/Core Web Vitals 的一部分)! 资源 这是一篇关于 JS 库的旧 Google 文章: https://web.dev/articles/lazy-loading-images 但是使用本机延迟加载,我们不再需要 JS(关于此主题的新 Google 文章): https://web.dev/articles/browser-level-image-lazy-loading#why_browser-level_lazy_loading 所有主要浏览器中的代码示例和支持(对于 <img> 和 <iframe>): https://www.linkedin.com/feed/update/urn:li:activity:7129755923555737601/ 何时/什么要延迟加载: https://www.erwinhofman.com/blog/to-lazyload-above-the-fold-images/
我正在编写一个应用程序,其中包含具有以下导航属性的模型类 测试报告 => 学生 => 课程表 => 测试 该关系是一对多的