是否可以从用户在 Sitecore 中上传的图像创建精灵

本文关键字:图像 精灵 创建 Sitecore 用户 是否 | 更新日期: 2023-09-27 18:30:38

我们正在构建一个主要以图像为基础的内容的 sitecore 应用程序。

目前,我们看到iOS上具有大量图像的页面的性能下降。

我们的大多数图像都是精灵,但用户图像目前是逐个加载的。

有没有人想出一种方法来从上传到 sitecore 的图像中生成精灵?

是否可以从用户在 Sitecore 中上传的图像创建精灵

我找到了这篇关于如何使用 svg 处理 Sitecore 中精灵的博客文章。

我希望它能帮助您解决问题。

我以前做过一些关于这个主题的概念工作,但还没有找到时间做一个真正的实现。但我会尝试分享我关于如何做到这一点的一些想法。

首先,您必须识别应该在精灵中的图像。这可以通过遍历项目字段和可能的相关项目在页面请求中完成,或者如果您有任何其他逻辑可以获取此内容。如果列表是静态的,则最好在发布时确定这一点。本质上,您需要每个图像指南,宽度和高度。您还需要查看您拥有的图像大小调整规则。精灵中的图像需要具有相似的宽度或共同高度。否则,如果没有大的空白区域,就很难对它们进行分组。

当你有一组图像时,你可以获取媒体项并找到为精灵构建 html 代码所需的信息。本质上是每个图像在精灵中所在的 X 和 Y 坐标,以便您可以正确呈现 html。这也会产生一个包含创建精灵的所有信息的对象。可以为此对象分配一个 guid,你可以在图像 URL 中使用该 GUID 来请求子画面。

请注意,如果您使用的是多服务器环境,则必须查看要用于持久化有关精灵的数据的策略。例如,如果您有它,则可以将其存储在Mongo中,或者使用可从所有内容交付服务器访问的数据库。在多服务器环境中,html-request可能在一台服务器上,而图像精灵请求在另一台服务器上,因此必须能够仅从图像URL中的信息中检索或构建精灵。(这也是在单个服务器环境中的最佳实践,但它变得简单得多)

然后,您将创建一个图像请求处理程序,该处理程序获取 sprite 对象 guid,并从持久化的 sprite 对象获取媒体项,(可选)执行大小调整等,并将其呈现到位图上。然后可以将位图另存为 jpg/png 并缓存在磁盘(或其他合适的服务)上并返回到客户端。

当然,有很多

不同的方法可以完成每个部分,其中大部分取决于你可以放入精灵中的数据(数据驱动,用户在当前项目或相关项目上精心挑选的数据,个性化等),如果你可以执行精灵对象的预计算并在发布时生成精灵,或者如果它必须在渲染时完成, 您的托管环境是什么样的等等。

希望这有帮助