Laravel 中的车辆图像,通过 HTTP 客户端解析,通过 Cache 门面缓存,在 Blade 组件中渲染。

Laravel 已经有了这三个组件所需的内容:一个 HTTP 客户端,一个缓存和一个队列。在服务类中解析车辆,记住 URL,并通过 Blade 组件渲染它,这样应用程序的其余部分就不必考虑它了。

LP laravel: hero1
LP laravel: hero2
LP laravel: s1

一个服务类,默认缓存

将查找包装在一个小服务中,用 Cache::remember 将其包围,并在容器中绑定它。从那时起,代码库的其余部分调用一个方法并接收一个 URL,完全不知道涉及了一个 API。

  • 配置和密钥位于配置和 .env 中
  • Cache::remember 使 API 调用变得罕见
  • 在测试中使用 Http::fake 很容易模拟

Laravel 版本的集成

一个服务、一个缓存调用、一个 Blade 组件和一个排队任务用于批量处理。这四个都是无聊的版本

01
添加配置和密钥

一个配置文件包含 .env 中的密钥,因此没有敏感信息进入版本控制

02
编写服务

HTTP 客户端使用 VIN 或规格调用 API,方法返回视图所需的 URL。

03
缓存结果

使用从车辆标识符构建的密钥进行 Cache::remember。列表然后完全从缓存中渲染

04
将批量工作放入队列

对于完整的目录传递,为每辆车派发一个任务,以便导入在后台运行并可以重试

LP laravel: s2

Blade 组件将其保留在视图之外

一个单独的 x-vehicle-image 组件接受车辆和宽度,应用程序中的每个视图都使用它。当角度或格式稍后发生变化时,您只需编辑一个文件

  • 一个用于列表、详情页面和 PDF 的组件
  • 宽度作为属性,使每个视图请求它所渲染的内容
  • 透明变体适用于主题布局

Laravel 中的车辆图像,实践中

Laravel 应用通常通过导入脚本获取车辆图像。有人编写一个命令将照片下载到存储中,从那时起应用程序就带有一个充满车辆图片的文件系统、一个保持其最新的队列以及每次缺少型号年份时的错误报告。

按需解析完全去除了存储层。您已经拥有的车辆标识符变成了图像,缓存使其成本低廉,而 Blade 组件则使其不可见。以前的导入管道及其各种故障模式变成了一个返回字符串的方法调用。

Laravel 团队常问的问题

有 Laravel 包吗?

没有专门的包。API 是一个普通的 REST 端点,HTTP 客户端加上一个服务类通常比配置包所需的代码更少。

我应该如何缓存查找?

使用从 VIN 或规格构建的密钥进行 Cache::remember。长 TTL 是可以的,因为答案只在您的目录发生变化时才会改变

我应该在文件系统中存储图像吗?

不需要。URL 指向我们的 CDN,因此存储、备份和磁盘使用量保持不变。

如何测试调用 API 的代码?

在测试用例中使用 Http::fake。由于服务返回的是 URL,大多数测试只需要断言返回的形状。

那全目录导入呢?

为每辆车派发一个排队任务。失败的任务会自动重试,导入操作不会进入请求周期

它与 Livewire 或 Inertia 兼容吗?

是的。两者都从服务器接收 URL 作为普通字符串,所以集成方式不变。

在本地分支中尝试

告诉我们车辆在您的模式中是如何存储的,以及图像在哪里渲染。我们会返回 URL 和服务概述。

  • 列表和详情视图的尺寸变体
  • 一个缓存模式与您的流量匹配
  • 试用版涵盖了一个完整的集成分支
谢谢。我们已经收到您的消息,并将为您的配置提供图像 URL。
出了点问题。请重试,或写信到 info@vehicleimagery.com。

将其放入服务类中

从您的数据库中发送几个 VIN 或规格,以及您的视图渲染的宽度。您今天就能得到测试的 URL。

通常在同一工作日