我们如何使用 Fast Laravel 在边缘缓存 Laravel 新闻

发布日期 经过

我坐下来和 杰麦克 在 Laravel Creator Series 的演讲中,我们谈到了我们刚刚完成的一项工作:使用他的工具在边缘缓存 Laravel News。 快速 Laravel 课程和 Cloudflare 我们将该网站视为一个案例研究,现在它已经上线,我们想分享一下我们做了什么以及我们在哪里遇到了困难。

有趣的是,Laravel News 是一个流量很高的网站,内容也在不断变化。新文章、新链接、新赞助商,还有页面顶部的提示通知。很多人认为这样的页面无法缓存。但本文的重点在于,它是可以缓存的。

从您的常用页面开始

杰森采取了一种系统化的方法。他查看请求流量,找到访问量最高的页面,并首先缓存这些页面,然后依次向下处理,直到访问量最高的都是低流量的子页面。对我们来说,最终只缓存了大约五个页面:

我们必须克服的三件事

该网站大部分是静态的,但少数特定部分是动态的,因此存在三个主要挑战。

在不需要的地方弃用 Livewire。 该网站的建设使得几乎所有东西都是…… 活线 虽然组件本身使用了 Livewire 的响应式特性,但只有新闻简报表单真正用到了 Livewire 的响应式特性。其他所有组件实际上都只是 Blade 模板。将这些模板转换回纯 Blade 组件是一个非常简单的重构,它隔离了真正需要保持动态特性的少数几个区域。

保持动态部分动态。 有些内容无法冻结在缓存页面中:例如弹出式通知、新闻简报,以及每次请求都会轮换显示的赞助商和合作伙伴广告位,以避免同一合作伙伴全天显示。我们之前已经在使用 Alpine 来运行 Livewire,所以我们添加了 Alpine AJAX 并利用它在页面加载时替换这些组件。

两个缓存层相互竞争。 Laravel News 运行于 Laravel 云 该平台内置了边缘缓存功能,底层使用 Cloudflare。由于我们已经直接使用了 Cloudflare,这两层缓存机制相互冲突,很难判断哪一层的策略生效,也很难彻底禁用 Cloudflare 层。Laravel Cloud 团队在我们排查问题的过程中提供了极大的支持,但最终我们发现绕过 Cloudflare 的规则直接使用我们自己的 Cloudflare 更简单。这样可以获得所有相同的底层优势。

内容更改时清除缓存

我们像其他网站一样在部署时清除缓存,但真正的工作是在文章发布或链接审核通过时清除缓存。这大部分工作都是通过 Laravel 模型事件完成的。当文章更新时,我们会监听…… updated 事件并清除该特定文章,以及首页和博客页面,因为最近的帖子也会显示在那里。

最棘手的是定时发布的文章。我们会在前一天晚上写好文章,然后安排在早上9点发布,所以文章上线时不会触发任何事件,只需要进行一个查询来比较即可。 published_at 最简单的解决方法是利用我们已有的将新帖子分享到社交媒体的命令。现在,该命令还会清除首页、博客、文章和链接页面。最坏的情况是,在命令运行期间,页面会暂时失效大约五分钟。

随时随地都能用

Jason明确表示,这些都不是Laravel Cloud特有的。只要你的应用前端部署了Cloudflare,它就能在任何服务器上运行。他运行 Laravel 转变 他租用了一台每月 5 美元的 DigitalOcean 服务器,每天处理大约 50,000 个请求,并且整个面向公众的页面都进行了缓存,他发现从边缘服务器到目标服务器的响应时间约为 20 毫秒。

目前唯一的例外是 Livewire,因为它严重依赖会话来实现响应。Jason 正在与……交谈 凯莱布·波尔齐奥 关于一个匿名组件,它可以在页面加载后激活。Inertia、React 以及任何其他调用 API 的框架都可以。

对我们来说,效果立竿见影。Laravel News 的缓存率从十几提升到了绝大多数请求,峰值甚至接近 70%,网站速度明显提升。下一步计划是大约一个季度后再次测试,看看服务器流量的减少是否能让我们降低计算资源等级,而不会引起任何用户注意。

一探究竟

请观看视频了解完整对话,并去看看…… 快速 Laravel 正如杰森所说,边缘缓存是那些被遗忘的实践之一,值得重新审视。一旦你学会了它,你就可以将其应用到你构建的每一个网站中。

埃里克·L·巴恩斯摄

Eric 是 Laravel News 的创建者,自 2012 年以来一直报道 Laravel 相关内容。

归档于:
立方体

Laravel 时事通讯

加入超过 4 万名开发者的行列,不错过任何新的技巧、教程等内容。

图像
Laravel 云

轻松创建和管理服务器,并在几秒钟内部署 Laravel 应用程序。

访问 Laravel Cloud
绝不妥协标志

绝不妥协

来自 No Compromises 播客的两位经验丰富的开发者 Joel 和 Aaron 现在可以为您的 Laravel 项目提供服务。⬧ 固定费用 9500 美元/月。⬧ 无冗长的销售流程。⬧ 无需签订合同。⬧ 100% 退款保证。

绝不妥协
了解 Softtech 的标志

了解软科技

Acquaint Softtech 提供 AI 就绪的 Laravel 开发人员,48 小时内即可上手,每月费用为 3000 美元,没有冗长的销售流程,并提供 100% 退款保证。

了解软科技
Kirschbaum 标志

樱桃树

提供创新和稳定性,确保您的Web应用程序取得成功。

樱桃树
Shift 标志

转移

还在运行旧版本的 Laravel?立即实现 Laravel 自动升级和代码现代化,让您的应用程序保持最新状态。

转移
SaaSykit:Laravel SaaS 入门套件徽标

SaaSykit:Laravel SaaS 入门套件

SaaSykit 是一个多租户 Laravel SaaS 入门套件,包含运行现代 SaaS 所需的所有功能,例如支付、美观的结账界面、管理面板、用户仪表盘、身份验证、现成组件、统计数据、博客、文档等等。

SaaSykit:Laravel SaaS 入门套件
PhpStorm 标志

PhpStorm

首选的 PHP IDE,对 Laravel 及其生态系统提供广泛的开箱即用支持。

PhpStorm
Lucky Media 标志

幸运传媒

Get Lucky Now——拥有十余年经验的 Laravel 开发理想之选!

幸运传媒
鱼叉:新一代时间跟踪和发票标志

Harpoon:新一代时间跟踪和发票系统

新一代时间跟踪和计费软件,帮助您的机构规划和预测盈利的未来。

Harpoon:新一代时间跟踪和发票系统
Tinkerwell 徽标

廷克威尔

Laravel 开发者必备的代码运行器。可在本地和生产环境中体验 AI、自动补全和即时反馈功能。

廷克威尔
Laravel Cloud 标志

Laravel 云

轻松创建和管理服务器,并在几秒钟内部署 Laravel 应用程序。

Laravel 云
使用 Vigilance 镜像监控任何驱动程序上的 Laravel 队列、命令和调度器

使用 Vigilance 监控 Laravel 队列、命令和调度器在任何驱动程序上的表现

阅读文章
观看纪录片《PHP的故事》预告片

观看纪录片《PHP的故事》预告片

阅读文章
使用 Laravel 构建 AI:让你的 AI 代理拥有实时网络搜索功能(图片)。

使用 Laravel 构建 AI:让你的 AI 代理拥有实时网络搜索功能

阅读文章
Lattice:用 PHP 图片描述 Inertia UI

Lattice:用 PHP 描述 Inertia UI

阅读文章
Laravel 13.16.0 镜像中的 artisan dev 命令

Laravel 13.16.0 中的 artisan dev 命令

阅读文章
LaraOwl:Laravel 应用的自托管监控镜像

LaraOwl:Laravel 应用的自托管监控

阅读文章