为内容驱动的 Web 应用优化托管涉及各种用于增强性能和用户体验的策略。主要方法包括使用 CDN 实现高效内容分发、缓存内容(包括静态资源)、优化安全性、监控、考虑可伸缩性选项以及最大限度地缩短延迟时间。高效的搜索选项和安全集成可进一步增强托管能力。持续优化基于性能的工作对于满足不断变化的用户需求至关重要。
托管静态资源
静态资源是指服务器不是为每个请求动态生成的文件。静态资源保持不变或不经常更新,并且通常会在不进行服务器端渲染的情况下传送到用户的浏览器。
静态文件的类型 | |
---|---|
图像 | 照片、图标、插图、图形和徽标等图片是静态文件。一些示例格式包括 JPEG、PNG、WebP、GIF 或 SVG。 |
样式表 | 样式表 (CSS) 用于控制界面的布局、字体、颜色和视觉方面。它们通常是静态的,并应用于浏览器中的 HTML 内容。 |
音频和视频 | 音频和视频文件是可嵌入到应用中或通过媒体播放器提供的静态资源。 |
JavaScript | 静态 JavaScript (JS) 文件包含可为应用互动的客户端代码。这些脚本会在用户的浏览器中执行,并处理表单验证和动态内容加载。第三方 JavaScript 库(例如 jQuery 和插件)在增强 Web 应用的功能时作为静态文件包含在内。 |
WASM | WebAssembly (WASM) 文件可在浏览器中运行基于堆栈的虚拟机,具有接近硬件性能,并可以用多种语言进行编译。 |
静态资源通常存储在 Web 服务器上,或通过 CDN 提供。开发者可以利用资源优化、缩减和压缩等技术来减小静态资源的文件大小;这有助于提高网页性能。您还应整合适当的缓存策略,以减少用户重新访问网站时重复下载的需求。
缓存数据和资源
在内容驱动的 Web 应用中,缓存包括存储和重复使用之前提取或生成的数据和资源。这是一种重要的优化技术,有助于快速向用户提供内容,尤其是对于频繁访问的数据和静态资源。对于内容驱动型 Web 应用,缓存可提高性能、减少服务器负载并最大限度地缩短延迟时间。
下表提供了各种缓存类型的说明。
类型 | |
---|---|
浏览器缓存 | 用户的浏览器可以缓存静态资源,例如图片、样式表和 JavaScript 文件。 当用户返回到同一网站时,这些资源可从本地缓存加载。 |
服务器端缓存 | 内容驱动型应用经常使用服务器端缓存机制来存储静态内容、数据库查询结果,甚至整个网页。常见的服务器端缓存方法包括反向代理(Nginx、Varnish)、内存中缓存(Redis、Memcached)和数据库查询结果缓存。 |
CDN 缓存 | CDN 能够缓存静态资源并将其分发到靠近用户的边缘服务器,从而提高分发速度。 |
数据库查询缓存 | 数据库查询缓存将频繁的数据库查询的结果存储在内存或缓存存储区中。这种类型可以提高数据库性能,因为它可以减少对类似请求重新运行相同查询的需要。 |
Service Worker 缓存 | 借助 Service Worker 缓存,Web 应用可以独立于网页的主执行线程缓存和管理 HTML、CSS 或 JavaScript 文件等资源。它们在后台运行,充当应用和网络之间的中介。好处包括离线功能和减少带宽使用量。 |
如何缓存资产
务必平衡缓存和及时更新,以便用户能够收到最新内容并在访问您的 Web 应用时继续获得良好的体验。请注意,并非所有资产都需要缓存。无需缓存动态内容,例如由服务器端脚本生成的 HTML 网页。静态资源可以缓存特定时长,也可以缓存到服务器上更新为止。缓存策略的实现计划取决于您选择执行的缓存类型。例如,您可以通过在 HTTP 响应中使用 Cache-Control 标头来实现浏览器缓存,也可以使用 Cache API 实现服务正在工作的缓存。
建议对缓存的资源使用版本控制系统;这样一来,您无需使缓存资源失效即可更新缓存资源。请务必监控缓存使用情况并在必要时进行调整。您可以详细了解如何在 web.dev 上缓存。
扩缩
扩缩内容驱动型 Web 应用涉及实施战略计划,以处理增加的流量和数据,同时保持应用的效率和可靠性。为了管理不断波动的流量模式和数据量,扩缩过程需要规划、监控和灵活性。扩缩 Web 应用时,您必须在优化性能和管理基础架构费用之间取得平衡。
负载平衡器在不同的服务器之间分配流量。这有助于确保您的应用可以有效处理增加的流量。您可以通过实现缓存机制来减少服务器的负载。CDN 还有助于缓存静态资源和分发内容,从而减少延迟时间。您还可以利用自动扩缩器,根据需要自动扩缩应用。自动扩缩器可以确保您的应用具有处理当前流量水平所需的资源。您的扩缩方法和策略需要有效监控和性能调整;请务必定期分析性能数据,并根据需要对基础架构和代码进行调整。
延迟时间
延迟时间是指用户与您的网页应用互动时所经历的时间延迟或延迟。它指的是 Web 请求从用户的浏览器或设备传输到网络服务器以及响应传回用户设备所用的时间;通常以毫秒 (ms) 为单位。延迟会严重影响用户体验,因为它会导致用户失望和失望。
影响延迟时间的因素包括:
因素 | |
---|---|
网络延迟 | Web 应用用户与服务器之间的距离、数据的路由以及网络连接质量都会影响网络延迟。 |
服务器处理时间 | 服务器处理时间取决于请求的复杂程度和服务器的性能。 |
内容传送时间 | 内容传送时间受服务器位置、CDN 和资产优化的影响。它指的是加载网页所需的图片、样式表、脚本和其他资源所用的时间。 |
内容加载策略 | 预提取、异步加载内容和延迟加载等策略会影响感知的延迟时间,因为它们通常会优先加载关键内容。 |
您可以通过结合使用内容缓存、内容分发优化、服务器性能调整等技术以及使用 CDN 来最大限度地减少 RTT,来缩短延迟时间。