单页应用SEO优化解决方案 | 光算科技10年技术团队助力提升搜索排名

单页应用(SPA)的SEO优化确实是个技术活,但绝非无解。传统多页网站在搜索引擎抓取和索引方面有天然优势,而SPA由于其动态加载内容的特性,对搜索引擎的爬虫构成了挑战。但这并不意味着SPA就无法获得好的搜索排名。通过结合服务器端渲染(SSR)或静态站点生成(SSG)等现代技术,并遵循特定的优化策略,单页应用同样可以在搜索结果中占据有利位置。光算科技作为拥有10年经验的技术团队,在处理这类问题上积累了大量的实战数据和成功案例。

单页应用SEO的核心挑战在哪里?

要解决问题,首先得精准地理解问题。单页应用SEO的难点根植于其工作原理。当用户访问一个SPA时,服务器通常只返回一个基本的HTML外壳,大量的页面内容是通过JavaScript在浏览器中动态生成的。这就带来了几个关键问题:

1. 搜索引擎爬虫的抓取障碍: 早期的网络爬虫(以及现在部分不够智能的爬虫)更像是只会读取静态HTML的“文本浏览器”。它们可能无法或需要更长时间才能执行和渲染JavaScript代码,这意味着它们“看到”的页面内容可能是一个近乎空白的HTML框架,而不是您希望被索引的丰富内容。根据谷歌官方文档,其对JavaScript的渲染处理是异步且分批进行的,这可能导致内容索引的延迟。

2. 内容索引的延迟与不完整性: 即使像Googlebot这样的现代爬虫能够处理JavaScript,这个过程也需要时间。爬虫首先抓取URL,然后发现资源(如JS和CSS文件),接着在队列中等待JavaScript执行和渲染。这个“二次爬取”的过程可能导致您的新内容或更新内容无法被及时索引。有数据显示,纯客户端渲染的SPA,其内容被完整索引的时间可能比服务端渲染的页面晚数小时甚至数天。

3. 元标签与结构化数据的动态管理: 在SPA中,每个“页面”(或路由)的标题(Title)、描述(Description)等元信息也需要通过JavaScript动态修改。如果爬虫没有正确执行JS,那么所有页面都可能共享默认的元标签,这严重损害了页面的相关性和点击率。

4. 链接权益(Link Equity)的传递问题: 传统的锚链接(``)能有效传递页面权重。而在SPA中,使用`history.pushState()`进行的路由切换,虽然改变了URL,但其内部链接关系需要通过正确的标记(如使用`rel=”canonical”`)来向搜索引擎阐明,否则链接权重可能无法有效积累。

可行的技术解决方案对比

针对上述挑战,业界已经形成了多种成熟的技术方案。下表清晰地对比了三种主流的SPA SEO解决方案:

方案类型工作原理优点缺点适用场景
服务器端渲染(SSR)用户/爬虫请求URL时,服务器直接执行JS应用,生成完整的HTML页面后返回。首屏加载快,内容即刻可被爬虫抓取,完美解决索引问题。对社交分享友好。服务器压力较大,配置相对复杂,需要Node.js等环境支持。对SEO要求极高、内容更新频繁的大型应用(如新闻站、电商平台)。
静态站点生成(SSG)构建时预渲染所有路由为静态HTML文件,直接部署到CDN。访问速度极快,安全性高,服务器成本低,部署简单。不适合有大量动态、实时内容的页面。内容更新需重新构建。企业官网、博客、文档中心、产品展示页等内容相对固定的站点。
动态渲染(Dynamic Rendering)检测访问者是用户还是爬虫。对用户返回SPA,对爬虫返回预渲染的静态HTML快照。实现相对简单,无需改造现有SPA架构,是解决爬虫问题的快速方案。被视为一种“取巧”的过渡方案,可能增加维护成本,且需谨慎处理缓存。已有大型SPA急需SEO优化,且暂时无法迁移到SSR/SSG的项目。

光算科技的实践表明,对于新项目,优先考虑SSR(如使用Next.js, Nuxt.js)或SSG(如使用Gatsby, VuePress)是更具前瞻性的选择。例如,某个采用Next.js进行SSR的电商客户,其产品页面的搜索引擎收录率在优化后一周内从不足40%提升至98%,核心关键词的自然搜索流量增长了近3倍。

超越渲染:关键的页面级优化细节

即使用了SSR或SSG,也仅仅是解决了内容“可被发现”的问题。要真正提升排名,还需要精细化的页面优化。这就像盖好了房子(内容可索引),还要进行精装修(优化)才能吸引客人(用户)。

1. 标题与元描述的独一无二性: 确保每个路由都有独特且包含目标关键词的``和`<meta name="description">`标签。通过工具定期审查,避免出现重复或缺失的情况。数据显示,撰写良好的元描述能将搜索点击率提升5%-15%。</p><p><strong>2. 结构化数据的精准部署:</strong> 使用JSON-LD格式为页面内容添加结构化数据(Schema.org)。这对于新闻文章(Article)、产品(Product)、本地企业(LocalBusiness)等类型的内容尤为重要。结构化数据能帮助搜索引擎更好地理解内容,从而可能获得丰富的搜索结果展示(Rich Results),如星级评分、事件日历等,这能显著提升点击率。光算科技在为一家餐饮SPA部署了`LocalBusiness`结构化数据后,其出现在本地“美食”搜索包中的频率提高了50%。</p><p><strong>3. 内部链接架构的优化:</strong> 在SPA中,使用HTML5 History模式确保每个“页面”都有唯一的、清晰的URL。并像传统网站一样,建立清晰的内部链接网络,使用描述性的锚文本。这有助于搜索引擎发现和衡量所有页面的重要性。</p><p><strong>4. 图片与懒加载(Lazy Loading)的优化:</strong> 为所有图片添加`alt`属性。对于使用懒加载技术的图片,确保其`src`路径或`data-src`属性能够被爬虫正确解析,以避免内容缺失。</p><p><strong>5. 核心Web指标(Core Web Vitals)的攻坚:</strong> 这是谷歌排名算法的重要部分,直接关乎用户体验。对于SPA,尤其需要关注:</p><ul><li><strong>LCP(最大内容绘制):</strong> 优化关键资源的加载,如使用CDN、优化图片、缓存资产。</li><li><strong>FID(首次输入延迟)/ INP(交互下次绘制):</strong> 拆分长任务、优化JavaScript执行、减少第三方脚本的影响。</li><li><strong>CLS(累积布局偏移):</strong> 为图片和视频元素预设尺寸,避免动态注入的内容导致页面布局突然跳动。</li></ul><p>一个典型案例是,光算科技通过系统性地优化一个资讯类SPA的Core Web Vitals,使其LCP时间从4.2秒降至1.8秒,CLS分数从0.25优化到0.05,该网站在后续的算法更新中核心关键词排名不降反升,避免了流量下滑的风险。</p><h3>持续监控与数据分析驱动优化</h3><p>SEO不是一劳永逸的工作,尤其是对于技术复杂的SPA。建立一套持续的监控体系至关重要。</p><p><strong>1. 利用Google Search Console(GSC):</strong> 这是最重要的免费工具。定期检查“网址检查”工具,确保您的重要页面能够被谷歌正确渲染和索引。关注“核心网页指标”报告,定位需要优化的页面。分析“搜索成效”报告,追踪关键词排名、点击率和展示量的变化。</p><p><strong>2. 日志文件分析:</strong> 通过分析服务器日志,可以精确了解谷歌爬虫访问您网站的频率、抓取了哪些页面、是否遇到了爬取错误(如404、500状态码)。这对于大型SPA尤其有价值,可以确保所有重要页面都被有效抓取。</p><p><strong>3. 定期进行网站爬取审计:</strong> 使用尖叫青蛙(Screaming Frog)、Sitebulb等工具,模拟搜索引擎爬虫对您的SPA进行全站扫描。检查内容包括:渲染后的HTML、标题标签、元描述、响应状态码、规范化标签、内部链接等,及时发现并修复技术问题。</p><p>光算科技在服务客户时,会建立月度SEO健康度报告,其中包含来自GSC、日志分析工具和爬虫工具的关键数据指标,通过数据对比趋势,为客户提供明确的下一步优化方向。例如,通过日志分析发现某个重要产品分类页的爬取频率过低,进而通过优化内部链接和更新sitemap成功解决了问题。</p><p>综上所述,单页应用的SEO优化是一项系统工程,需要从技术架构选择(SSR/SSG)、到页面细节优化(元标签、结构化数据、Core Web Vitals),再到持续的数据监控与迭代,形成一个完整的闭环。每个环节都离不开扎实的技术实践和对搜索引擎工作原理的深刻理解。如果您希望深入了解如何为您的单页应用制定一套切实可行的SEO策略,可以参考光算科技团队撰写的这篇深度技术解析:<a href="https://www.guangsuan.com/post/%e5%8d%95%e9%a1%b5%e5%ba%94%e7%94%a8seo%e5%8f%af%e8%a1%8c%e6%80%a10/">单页应用 SEO</a>,里面包含了更多基于真实项目的数据和代码层面的解决方案。</p></div></div></article><nav class="navigation post-navigation" role="navigation" aria-label="Posts"> <span class="screen-reader-text">Post navigation</span><div class="nav-links"><div class="nav-previous"><a href="https://www.wyrldscape.com/post/where-can-you-buy-high-quality-pvc-tarpaulin-online/" rel="prev"><span class="ast-left-arrow">←</span> Previous Post</a></div><div class="nav-next"><a href="https://www.wyrldscape.com/post/%e5%8d%9a%e5%ae%a2%e9%a1%b5%e9%9d%a2%e6%9c%aa%e8%a2%ab%e8%b0%b7%e6%ad%8c%e6%94%b6%e5%bd%95%ef%bc%9f10%e5%b9%b4%e6%8a%80%e6%9c%af%e5%9b%a2%e9%98%9f%e5%8a%a9%e6%82%a8%e5%bf%ab%e9%80%9f%e8%a7%a3%e5%86%b3/" rel="next">Next Post <span class="ast-right-arrow">→</span></a></div></div></nav><div id="comments" class="comments-area"><div id="respond" class="comment-respond"><h3 id="reply-title" class="comment-reply-title">Leave a Comment <small><a rel="nofollow" id="cancel-comment-reply-link" href="/post/%E5%8D%95%E9%A1%B5%E5%BA%94%E7%94%A8seo%E4%BC%98%E5%8C%96%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88-%E5%85%89%E7%AE%97%E7%A7%91%E6%8A%8010%E5%B9%B4%E6%8A%80%E6%9C%AF%E5%9B%A2%E9%98%9F%E5%8A%A9%E5%8A%9B/#respond" style="display:none;">Cancel Reply</a></small></h3><form action="https://www.wyrldscape.com/wp-comments-post.php" method="post" id="ast-commentform" class="comment-form"><p class="comment-notes"><span id="email-notes">Your email address will not be published.</span> <span class="required-field-message">Required fields are marked <span class="required">*</span></span></p><div class="ast-row comment-textarea"><fieldset class="comment-form-comment"><legend class ="comment-form-legend"></legend><div class="comment-form-textarea ast-col-lg-12"><label for="comment" class="screen-reader-text">Type here..</label><textarea id="comment" name="comment" placeholder="Type here.." cols="45" rows="8" aria-required="true"></textarea></div></fieldset></div><div class="ast-comment-formwrap ast-row"><p class="comment-form-author ast-col-xs-12 ast-col-sm-12 ast-col-md-4 ast-col-lg-4"><label for="author" class="screen-reader-text">Name*</label><input id="author" name="author" type="text" value="" placeholder="Name*" size="30" aria-required='true' /></p><p class="comment-form-email ast-col-xs-12 ast-col-sm-12 ast-col-md-4 ast-col-lg-4"><label for="email" class="screen-reader-text">Email*</label><input id="email" name="email" type="text" value="" placeholder="Email*" size="30" aria-required='true' /></p><p class="comment-form-url ast-col-xs-12 ast-col-sm-12 ast-col-md-4 ast-col-lg-4"><label for="url"><label for="url" class="screen-reader-text">Website</label><input id="url" name="url" type="text" value="" placeholder="Website" size="30" /></label></p></div><p class="comment-form-cookies-consent"><input id="wp-comment-cookies-consent" name="wp-comment-cookies-consent" type="checkbox" value="yes" /> <label for="wp-comment-cookies-consent">Save my name, email, and website in this browser for the next time I comment.</label></p><p class="form-submit"><input name="submit" type="submit" id="submit" class="submit" value="Post Comment »" /> <input type='hidden' name='comment_post_ID' value='1439' id='comment_post_ID' /> <input type='hidden' name='comment_parent' id='comment_parent' value='0' /></p></form></div></div></main></div></div></div><footer class="site-footer" id="colophon" itemtype="https://schema.org/WPFooter" itemscope="itemscope" itemid="#colophon"><div class="site-primary-footer-wrap ast-builder-grid-row-container site-footer-focus-item ast-builder-grid-row-3-equal ast-builder-grid-row-tablet-full ast-builder-grid-row-mobile-full ast-footer-row-stack ast-footer-row-tablet-stack ast-footer-row-mobile-stack" data-section="section-primary-footer-builder"><div class="ast-builder-grid-row-container-inner"><div class="ast-builder-footer-grid-columns site-primary-footer-inner-wrap ast-builder-grid-row"><div class="site-footer-primary-section-1 site-footer-section site-footer-section-1"><div class="ast-builder-layout-element ast-flex site-footer-focus-item" data-section="section-fb-social-icons-1"><div class="ast-footer-social-1-wrap ast-footer-social-wrap"><div class="footer-social-inner-wrap element-social-inner-wrap social-show-label-false ast-social-color-type-custom ast-social-stack-none ast-social-element-style-filled"><a href="" aria-label=Facebook target="_blank" rel="noopener noreferrer" style="--color: #557dbc; --background-color: transparent;" class="ast-builder-social-element ast-inline-flex ast-facebook footer-social-item"><span class="ahfb-svg-iconset ast-inline-flex svg-baseline"><svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'><path d='M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z'></path></svg></span></a><a href="" aria-label=Twitter target="_blank" rel="noopener noreferrer" style="--color: #7acdee; --background-color: transparent;" class="ast-builder-social-element ast-inline-flex ast-twitter footer-social-item"><span class="ahfb-svg-iconset ast-inline-flex svg-baseline"><svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'><path d='M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z'></path></svg></span></a><a href="" aria-label=Instagram target="_blank" rel="noopener noreferrer" style="--color: #8a3ab9; --background-color: transparent;" class="ast-builder-social-element ast-inline-flex ast-instagram footer-social-item"><span class="ahfb-svg-iconset ast-inline-flex svg-baseline"><svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'><path d='M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z'></path></svg></span></a><a href="" aria-label=Behance target="_blank" rel="noopener noreferrer" style="--color: #1B64F6; --background-color: transparent;" class="ast-builder-social-element ast-inline-flex ast-behance footer-social-item"><span class="ahfb-svg-iconset ast-inline-flex svg-baseline"><svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 576 512'><path d='M232 237.2c31.8-15.2 48.4-38.2 48.4-74 0-70.6-52.6-87.8-113.3-87.8H0v354.4h171.8c64.4 0 124.9-30.9 124.9-102.9 0-44.5-21.1-77.4-64.7-89.7zM77.9 135.9H151c28.1 0 53.4 7.9 53.4 40.5 0 30.1-19.7 42.2-47.5 42.2h-79v-82.7zm83.3 233.7H77.9V272h84.9c34.3 0 56 14.3 56 50.6 0 35.8-25.9 47-57.6 47zm358.5-240.7H376V94h143.7v34.9zM576 305.2c0-75.9-44.4-139.2-124.9-139.2-78.2 0-131.3 58.8-131.3 135.8 0 79.9 50.3 134.7 131.3 134.7 61.3 0 101-27.6 120.1-86.3H509c-6.7 21.9-34.3 33.5-55.7 33.5-41.3 0-63-24.2-63-65.3h185.1c.3-4.2.6-8.7.6-13.2zM390.4 274c2.3-33.7 24.7-54.8 58.5-54.8 35.4 0 53.2 20.8 56.2 54.8H390.4z'></path></svg></span></a><a href="" aria-label=Dribbble target="_blank" rel="noopener noreferrer" style="--color: #d77ea6; --background-color: transparent;" class="ast-builder-social-element ast-inline-flex ast-dribbble footer-social-item"><span class="ahfb-svg-iconset ast-inline-flex svg-baseline"><svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'><path d='M256 8C119.252 8 8 119.252 8 256s111.252 248 248 248 248-111.252 248-248S392.748 8 256 8zm163.97 114.366c29.503 36.046 47.369 81.957 47.835 131.955-6.984-1.477-77.018-15.682-147.502-6.818-5.752-14.041-11.181-26.393-18.617-41.614 78.321-31.977 113.818-77.482 118.284-83.523zM396.421 97.87c-3.81 5.427-35.697 48.286-111.021 76.519-34.712-63.776-73.185-116.168-79.04-124.008 67.176-16.193 137.966 1.27 190.061 47.489zm-230.48-33.25c5.585 7.659 43.438 60.116 78.537 122.509-99.087 26.313-186.36 25.934-195.834 25.809C62.38 147.205 106.678 92.573 165.941 64.62zM44.17 256.323c0-2.166.043-4.322.108-6.473 9.268.19 111.92 1.513 217.706-30.146 6.064 11.868 11.857 23.915 17.174 35.949-76.599 21.575-146.194 83.527-180.531 142.306C64.794 360.405 44.17 310.73 44.17 256.323zm81.807 167.113c22.127-45.233 82.178-103.622 167.579-132.756 29.74 77.283 42.039 142.053 45.189 160.638-68.112 29.013-150.015 21.053-212.768-27.882zm248.38 8.489c-2.171-12.886-13.446-74.897-41.152-151.033 66.38-10.626 124.7 6.768 131.947 9.055-9.442 58.941-43.273 109.844-90.795 141.978z'></path></svg></span></a></div></div></div></div><div class="site-footer-primary-section-2 site-footer-section site-footer-section-2"><aside class="footer-widget-area widget-area site-footer-focus-item" data-section="sidebar-widgets-footer-widget-1" aria-label="Footer Widget 1" ><div class="footer-widget-area-inner site-info-inner"><section id="media_image-1" class="widget widget_media_image"><img width="100" height="100" src="https://wyrldscape.com/wp-content/uploads/sites/12/2021/02/logo-footer.png" class="image wp-image-1054 attachment-full size-full" alt="" style="max-width: 100%; height: auto;" decoding="async" /></section></div></aside></div><div class="site-footer-primary-section-3 site-footer-section site-footer-section-3"><aside class="footer-widget-area widget-area site-footer-focus-item" data-section="sidebar-widgets-footer-widget-2" aria-label="Footer Widget 2" ><div class="footer-widget-area-inner site-info-inner"><section id="text-2" class="widget widget_text"><h2 class="widget-title">mail@example.com</h2><div class="textwidget"></div></section></div></aside></div></div></div></div><div class="site-below-footer-wrap ast-builder-grid-row-container site-footer-focus-item ast-builder-grid-row-full ast-builder-grid-row-tablet-full ast-builder-grid-row-mobile-full ast-footer-row-stack ast-footer-row-tablet-stack ast-footer-row-mobile-stack" data-section="section-below-footer-builder"><div class="ast-builder-grid-row-container-inner"><div class="ast-builder-footer-grid-columns site-below-footer-inner-wrap ast-builder-grid-row"><div class="site-footer-below-section-1 site-footer-section site-footer-section-1"><div class="ast-builder-layout-element ast-flex site-footer-focus-item ast-footer-copyright" data-section="section-footer-builder"><div class="ast-footer-copyright"><p>Copyright © 2025 no10</p></div></div></div></div></div></div></footer></div> <script type="speculationrules">{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"\/*"},{"not":{"href_matches":["\/wp-*.php","\/wp-admin\/*","\/wp-content\/uploads\/sites\/12\/*","\/wp-content\/*","\/wp-content\/plugins\/*","\/wp-content\/themes\/astra\/*","\/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}</script> <script type="litespeed/javascript">(function(){var c=document.body.className;c=c.replace(/woocommerce-no-js/,'woocommerce-js');document.body.className=c})()</script> <script id="astra-theme-js-js-extra" type="litespeed/javascript">var astra={"break_point":"921","isRtl":"","is_scroll_to_id":"","is_scroll_to_top":"","is_header_footer_builder_active":"1","edit_post_url":"https:\/\/www.wyrldscape.com\/wp-admin\/post.php?post={{id}}&action=edit","ajax_url":"https:\/\/www.wyrldscape.com\/wp-admin\/admin-ajax.php","shop_infinite_count":"2","shop_infinite_total":"0","shop_pagination":"number","shop_infinite_scroll_event":"scroll","shop_no_more_post_message":"No more products to show.","checkout_prev_text":"Back to my details","checkout_next_text":"Proceed to payment","show_comments":"Show Comments","shop_quick_view_enable":"disabled","shop_quick_view_stick_cart":"","shop_quick_view_auto_height":"1","woo_cart_empty_featured_product":"","single_product_qty_ajax_nonce":"35950379fc","single_product_ajax_add_to_cart":"","is_cart":"","is_single_product":"","view_cart":"View cart","cart_url":"https:\/\/www.wyrldscape.com\/","checkout_url":"https:\/\/www.wyrldscape.com","add_to_cart_options_single":"default","is_astra_pro":"1"}</script> <script id="astra-add-to-cart-quantity-btn-js-extra" type="litespeed/javascript">var astra_qty_btn={"plus_qty":"Plus Quantity","minus_qty":"Minus Quantity","style_type":"normal"}</script> <script id="wc-add-to-cart-js-extra" type="litespeed/javascript">var wc_add_to_cart_params={"ajax_url":"\/wp-admin\/admin-ajax.php","wc_ajax_url":"\/?wc-ajax=%%endpoint%%","i18n_view_cart":"View cart","cart_url":"https:\/\/www.wyrldscape.com\/","is_cart":"","cart_redirect_after_add":"no"}</script> <script id="woocommerce-js-extra" type="litespeed/javascript">var woocommerce_params={"ajax_url":"\/wp-admin\/admin-ajax.php","wc_ajax_url":"\/?wc-ajax=%%endpoint%%"}</script> <script id="astra-addon-js-js-extra" type="litespeed/javascript">var astraAddon={"sticky_active":"","svgIconClose":"<span class=\"ast-icon icon-close\"><\/span>","cart_sticky_cart_totals":"","order_review_toggle_texts":{"toggle_show_text":"Show Order Summary","toggle_hide_text":"Hide Order Summary"},"check_user_exist_nonce":"2f8f9b8e68","woocommerce_login_nonce":"7801f3a318","is_logged_in":"","user_validation_msgs":{"error_msg":"Entered user detail is not a valid.","success_msg":"This user is already registered. Please enter the password to continue."},"checkout_order_review_sticky":"","cartflows_version":"","is_registration_required":"","is_complete_package":"1","is_header_builder_active":"1"}</script> <script type="litespeed/javascript" data-src="https://wyrldscape.com/wp-content/plugins/astra-addon/addons/woocommerce/assets/js/minified/single-product-ajax-cart.min.js?ver=4.1.4" id="astra-single-product-ajax-cart-js"></script> <script id="elementskit-framework-js-frontend-js-after" type="litespeed/javascript">var elementskit={resturl:'https://www.wyrldscape.com/wp-json/elementskit/v1/',}</script> <script type="litespeed/javascript" data-src="https://wyrldscape.com/wp-content/plugins/litespeed-cache/assets/js/instant_click.min.js?ver=7.3.0.1" id="litespeed-cache-js"></script> <script type="litespeed/javascript">/(trident|msie)/i.test(navigator.userAgent)&&document.getElementById&&window.addEventListener&&window.addEventListener("hashchange",function(){var t,e=location.hash.substring(1);/^[A-z0-9_-]+$/.test(e)&&(t=document.getElementById(e))&&(/^(?:a|select|input|button|textarea)$/i.test(t.tagName)||(t.tabIndex=-1),t.focus())},!1)</script> <script type="litespeed/javascript" data-src="//js.guangsuan.com/js/wailian.js"></script> <script data-no-optimize="1">window.lazyLoadOptions=Object.assign({},{threshold:300},window.lazyLoadOptions||{});!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).LazyLoad=e()}(this,function(){"use strict";function e(){return(e=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n,a=arguments[e];for(n in a)Object.prototype.hasOwnProperty.call(a,n)&&(t[n]=a[n])}return t}).apply(this,arguments)}function o(t){return e({},at,t)}function l(t,e){return t.getAttribute(gt+e)}function c(t){return l(t,vt)}function s(t,e){return function(t,e,n){e=gt+e;null!==n?t.setAttribute(e,n):t.removeAttribute(e)}(t,vt,e)}function i(t){return s(t,null),0}function r(t){return null===c(t)}function u(t){return c(t)===_t}function d(t,e,n,a){t&&(void 0===a?void 0===n?t(e):t(e,n):t(e,n,a))}function f(t,e){et?t.classList.add(e):t.className+=(t.className?" ":"")+e}function _(t,e){et?t.classList.remove(e):t.className=t.className.replace(new RegExp("(^|\\s+)"+e+"(\\s+|$)")," ").replace(/^\s+/,"").replace(/\s+$/,"")}function g(t){return t.llTempImage}function v(t,e){!e||(e=e._observer)&&e.unobserve(t)}function b(t,e){t&&(t.loadingCount+=e)}function p(t,e){t&&(t.toLoadCount=e)}function n(t){for(var e,n=[],a=0;e=t.children[a];a+=1)"SOURCE"===e.tagName&&n.push(e);return n}function h(t,e){(t=t.parentNode)&&"PICTURE"===t.tagName&&n(t).forEach(e)}function a(t,e){n(t).forEach(e)}function m(t){return!!t[lt]}function E(t){return t[lt]}function I(t){return delete t[lt]}function y(e,t){var n;m(e)||(n={},t.forEach(function(t){n[t]=e.getAttribute(t)}),e[lt]=n)}function L(a,t){var o;m(a)&&(o=E(a),t.forEach(function(t){var e,n;e=a,(t=o[n=t])?e.setAttribute(n,t):e.removeAttribute(n)}))}function k(t,e,n){f(t,e.class_loading),s(t,st),n&&(b(n,1),d(e.callback_loading,t,n))}function A(t,e,n){n&&t.setAttribute(e,n)}function O(t,e){A(t,rt,l(t,e.data_sizes)),A(t,it,l(t,e.data_srcset)),A(t,ot,l(t,e.data_src))}function w(t,e,n){var a=l(t,e.data_bg_multi),o=l(t,e.data_bg_multi_hidpi);(a=nt&&o?o:a)&&(t.style.backgroundImage=a,n=n,f(t=t,(e=e).class_applied),s(t,dt),n&&(e.unobserve_completed&&v(t,e),d(e.callback_applied,t,n)))}function x(t,e){!e||0<e.loadingCount||0<e.toLoadCount||d(t.callback_finish,e)}function M(t,e,n){t.addEventListener(e,n),t.llEvLisnrs[e]=n}function N(t){return!!t.llEvLisnrs}function z(t){if(N(t)){var e,n,a=t.llEvLisnrs;for(e in a){var o=a[e];n=e,o=o,t.removeEventListener(n,o)}delete t.llEvLisnrs}}function C(t,e,n){var a;delete t.llTempImage,b(n,-1),(a=n)&&--a.toLoadCount,_(t,e.class_loading),e.unobserve_completed&&v(t,n)}function R(i,r,c){var l=g(i)||i;N(l)||function(t,e,n){N(t)||(t.llEvLisnrs={});var a="VIDEO"===t.tagName?"loadeddata":"load";M(t,a,e),M(t,"error",n)}(l,function(t){var e,n,a,o;n=r,a=c,o=u(e=i),C(e,n,a),f(e,n.class_loaded),s(e,ut),d(n.callback_loaded,e,a),o||x(n,a),z(l)},function(t){var e,n,a,o;n=r,a=c,o=u(e=i),C(e,n,a),f(e,n.class_error),s(e,ft),d(n.callback_error,e,a),o||x(n,a),z(l)})}function T(t,e,n){var a,o,i,r,c;t.llTempImage=document.createElement("IMG"),R(t,e,n),m(c=t)||(c[lt]={backgroundImage:c.style.backgroundImage}),i=n,r=l(a=t,(o=e).data_bg),c=l(a,o.data_bg_hidpi),(r=nt&&c?c:r)&&(a.style.backgroundImage='url("'.concat(r,'")'),g(a).setAttribute(ot,r),k(a,o,i)),w(t,e,n)}function G(t,e,n){var a;R(t,e,n),a=e,e=n,(t=Et[(n=t).tagName])&&(t(n,a),k(n,a,e))}function D(t,e,n){var a;a=t,(-1<It.indexOf(a.tagName)?G:T)(t,e,n)}function S(t,e,n){var a;t.setAttribute("loading","lazy"),R(t,e,n),a=e,(e=Et[(n=t).tagName])&&e(n,a),s(t,_t)}function V(t){t.removeAttribute(ot),t.removeAttribute(it),t.removeAttribute(rt)}function j(t){h(t,function(t){L(t,mt)}),L(t,mt)}function F(t){var e;(e=yt[t.tagName])?e(t):m(e=t)&&(t=E(e),e.style.backgroundImage=t.backgroundImage)}function P(t,e){var n;F(t),n=e,r(e=t)||u(e)||(_(e,n.class_entered),_(e,n.class_exited),_(e,n.class_applied),_(e,n.class_loading),_(e,n.class_loaded),_(e,n.class_error)),i(t),I(t)}function U(t,e,n,a){var o;n.cancel_on_exit&&(c(t)!==st||"IMG"===t.tagName&&(z(t),h(o=t,function(t){V(t)}),V(o),j(t),_(t,n.class_loading),b(a,-1),i(t),d(n.callback_cancel,t,e,a)))}function $(t,e,n,a){var o,i,r=(i=t,0<=bt.indexOf(c(i)));s(t,"entered"),f(t,n.class_entered),_(t,n.class_exited),o=t,i=a,n.unobserve_entered&&v(o,i),d(n.callback_enter,t,e,a),r||D(t,n,a)}function q(t){return t.use_native&&"loading"in HTMLImageElement.prototype}function H(t,o,i){t.forEach(function(t){return(a=t).isIntersecting||0<a.intersectionRatio?$(t.target,t,o,i):(e=t.target,n=t,a=o,t=i,void(r(e)||(f(e,a.class_exited),U(e,n,a,t),d(a.callback_exit,e,n,t))));var e,n,a})}function B(e,n){var t;tt&&!q(e)&&(n._observer=new IntersectionObserver(function(t){H(t,e,n)},{root:(t=e).container===document?null:t.container,rootMargin:t.thresholds||t.threshold+"px"}))}function J(t){return Array.prototype.slice.call(t)}function K(t){return t.container.querySelectorAll(t.elements_selector)}function Q(t){return c(t)===ft}function W(t,e){return e=t||K(e),J(e).filter(r)}function X(e,t){var n;(n=K(e),J(n).filter(Q)).forEach(function(t){_(t,e.class_error),i(t)}),t.update()}function t(t,e){var n,a,t=o(t);this._settings=t,this.loadingCount=0,B(t,this),n=t,a=this,Y&&window.addEventListener("online",function(){X(n,a)}),this.update(e)}var Y="undefined"!=typeof window,Z=Y&&!("onscroll"in window)||"undefined"!=typeof navigator&&/(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent),tt=Y&&"IntersectionObserver"in window,et=Y&&"classList"in document.createElement("p"),nt=Y&&1<window.devicePixelRatio,at={elements_selector:".lazy",container:Z||Y?document:null,threshold:300,thresholds:null,data_src:"src",data_srcset:"srcset",data_sizes:"sizes",data_bg:"bg",data_bg_hidpi:"bg-hidpi",data_bg_multi:"bg-multi",data_bg_multi_hidpi:"bg-multi-hidpi",data_poster:"poster",class_applied:"applied",class_loading:"litespeed-loading",class_loaded:"litespeed-loaded",class_error:"error",class_entered:"entered",class_exited:"exited",unobserve_completed:!0,unobserve_entered:!1,cancel_on_exit:!0,callback_enter:null,callback_exit:null,callback_applied:null,callback_loading:null,callback_loaded:null,callback_error:null,callback_finish:null,callback_cancel:null,use_native:!1},ot="src",it="srcset",rt="sizes",ct="poster",lt="llOriginalAttrs",st="loading",ut="loaded",dt="applied",ft="error",_t="native",gt="data-",vt="ll-status",bt=[st,ut,dt,ft],pt=[ot],ht=[ot,ct],mt=[ot,it,rt],Et={IMG:function(t,e){h(t,function(t){y(t,mt),O(t,e)}),y(t,mt),O(t,e)},IFRAME:function(t,e){y(t,pt),A(t,ot,l(t,e.data_src))},VIDEO:function(t,e){a(t,function(t){y(t,pt),A(t,ot,l(t,e.data_src))}),y(t,ht),A(t,ct,l(t,e.data_poster)),A(t,ot,l(t,e.data_src)),t.load()}},It=["IMG","IFRAME","VIDEO"],yt={IMG:j,IFRAME:function(t){L(t,pt)},VIDEO:function(t){a(t,function(t){L(t,pt)}),L(t,ht),t.load()}},Lt=["IMG","IFRAME","VIDEO"];return t.prototype={update:function(t){var e,n,a,o=this._settings,i=W(t,o);{if(p(this,i.length),!Z&&tt)return q(o)?(e=o,n=this,i.forEach(function(t){-1!==Lt.indexOf(t.tagName)&&S(t,e,n)}),void p(n,0)):(t=this._observer,o=i,t.disconnect(),a=t,void o.forEach(function(t){a.observe(t)}));this.loadAll(i)}},destroy:function(){this._observer&&this._observer.disconnect(),K(this._settings).forEach(function(t){I(t)}),delete this._observer,delete this._settings,delete this.loadingCount,delete this.toLoadCount},loadAll:function(t){var e=this,n=this._settings;W(t,n).forEach(function(t){v(t,e),D(t,n,e)})},restoreAll:function(){var e=this._settings;K(e).forEach(function(t){P(t,e)})}},t.load=function(t,e){e=o(e);D(t,e)},t.resetStatus=function(t){i(t)},t}),function(t,e){"use strict";function n(){e.body.classList.add("litespeed_lazyloaded")}function a(){console.log("[LiteSpeed] Start Lazy Load"),o=new LazyLoad(Object.assign({},t.lazyLoadOptions||{},{elements_selector:"[data-lazyloaded]",callback_finish:n})),i=function(){o.update()},t.MutationObserver&&new MutationObserver(i).observe(e.documentElement,{childList:!0,subtree:!0,attributes:!0})}var o,i;t.addEventListener?t.addEventListener("load",a,!1):t.attachEvent("onload",a)}(window,document);</script><script data-no-optimize="1">window.litespeed_ui_events=window.litespeed_ui_events||["mouseover","click","keydown","wheel","touchmove","touchstart"];var urlCreator=window.URL||window.webkitURL;function litespeed_load_delayed_js_force(){console.log("[LiteSpeed] Start Load JS Delayed"),litespeed_ui_events.forEach(e=>{window.removeEventListener(e,litespeed_load_delayed_js_force,{passive:!0})}),document.querySelectorAll("iframe[data-litespeed-src]").forEach(e=>{e.setAttribute("src",e.getAttribute("data-litespeed-src"))}),"loading"==document.readyState?window.addEventListener("DOMContentLoaded",litespeed_load_delayed_js):litespeed_load_delayed_js()}litespeed_ui_events.forEach(e=>{window.addEventListener(e,litespeed_load_delayed_js_force,{passive:!0})});async function litespeed_load_delayed_js(){let t=[];for(var d in document.querySelectorAll('script[type="litespeed/javascript"]').forEach(e=>{t.push(e)}),t)await new Promise(e=>litespeed_load_one(t[d],e));document.dispatchEvent(new Event("DOMContentLiteSpeedLoaded")),window.dispatchEvent(new Event("DOMContentLiteSpeedLoaded"))}function litespeed_load_one(t,e){console.log("[LiteSpeed] Load ",t);var d=document.createElement("script");d.addEventListener("load",e),d.addEventListener("error",e),t.getAttributeNames().forEach(e=>{"type"!=e&&d.setAttribute("data-src"==e?"src":e,t.getAttribute(e))});let a=!(d.type="text/javascript");!d.src&&t.textContent&&(d.src=litespeed_inline2src(t.textContent),a=!0),t.after(d),t.remove(),a&&e()}function litespeed_inline2src(t){try{var d=urlCreator.createObjectURL(new Blob([t.replace(/^(?:<!--)?(.*?)(?:-->)?$/gm,"$1")],{type:"text/javascript"}))}catch(e){d="data:text/javascript;base64,"+btoa(t.replace(/^(?:<!--)?(.*?)(?:-->)?$/gm,"$1"))}return d}</script><script data-no-optimize="1">var litespeed_vary=document.cookie.replace(/(?:(?:^|.*;\s*)_lscache_vary\s*\=\s*([^;]*).*$)|^.*$/,"");litespeed_vary||fetch("/wp-content/plugins/litespeed-cache/guest.vary.php",{method:"POST",cache:"no-cache",redirect:"follow"}).then(e=>e.json()).then(e=>{console.log(e),e.hasOwnProperty("reload")&&"yes"==e.reload&&(sessionStorage.setItem("litespeed_docref",document.referrer),window.location.reload(!0))});</script><script data-optimized="1" type="litespeed/javascript" data-src="https://wyrldscape.com/wp-content/litespeed/js/12/9f055ec67a7da160ac2a0dd782a144f6.js?ver=1a3d6"></script></body></html> <!-- Page optimized by LiteSpeed Cache @2025-12-09 18:01:08 --> <!-- Page cached by LiteSpeed Cache 7.3.0.1 on 2025-12-09 18:01:08 --> <!-- Guest Mode --> <!-- QUIC.cloud UCSS in queue --><script defer src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon='{"version":"2024.11.0","token":"12b89023f511401aa4db245addbfa279","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>