图像的浏览器缓存是否足以使服务器端存储的需求失效?



我有一个架构问题,我不得不多次重写问题标题,因为SO要求我这样做。因此,如果您觉得如此,请随时更正它。我不是缓存相关方面的专家,所以我非常感谢有关我的架构相关问题的一些见解。

所以情况是这样的。我们有一个基于Web的设计应用程序(前端Javascript,后端PHP),它向在创建在线艺术作品时使用它的客户呈现大量剪贴画图像。早些时候,我们的应用程序被加载到 AWS 机器中,我们过去将剪贴画图像也本地存储在同一服务器中,以便无需任何网络传输即可加载剪贴画,从而使设计应用程序的加载时间更快。客户创建的设计也被保存到直接连接到基于Web的设计应用程序的后端MySQL服务器中(在JSON和关系模型中)。

不久前,一个新团队加入制作此应用程序的移动版本,他们坚持认为剪贴画应该从"中心位置"加载,既用于我们的 Web 应用程序,也用于他们正在创建的移动应用程序。他们还表示,设计也应该存储到一个"中央数据库"中,可以通过网络和移动应用程序访问(并且JSON结构也有一些重大的重新架构)。

因此,最后,体系结构发生了变化,剪贴画现在驻留在集中位置(S3 服务器)。还有一个"资产交付和存储(ADS)系统",我们的设计应用程序向该系统发出剪贴画图像的请求并获得服务。(请注意,剪贴画存储库非常大,仅根据各种参数(例如设计风格、客户帐户类型等)提供剪贴画图像的子集)。 所以这个任务现在由ADS系统(用python编写)完成。

而且由于我们的网页设计应用程序不再有任何剪贴画的本地存储或剪贴画过滤的逻辑(委托给 ADS,所以不再有服务器端 PHP),它也变成了一个纯粹基于 Web 的(前端 Javasdcript)应用程序,没有任何服务器要求,随后被转移到 S3。

现在真正的问题是,我们的 Web 应用程序在初始加载时似乎比我们将剪贴画存储在服务器中时慢得多。我读到,如果应用程序请求图像,这些图像将缓存在浏览器中,例如,如果客户在该缓存过期之前加载相同的订单,则无需将重复请求发送到服务器(在本例中为 ADS)。

如果这是真的,我真的可以说将剪贴画图像从设计应用程序服务器移动到 ADS 系统并且每次加载设计时都必须发送请求并加载它们,这在一定程度上导致了最近设计应用程序的缓慢?

大多数时候,我听到的答案是"移动应用程序也可以做同样的事情并且更快"。我不是移动开发人员。是否有一些移动缓存技巧可以帮助移动应用程序比纯粹基于 Web 的设计应用程序更"缓存效率",这样即使两者的架构相同(为剪贴画发送请求 ADS),移动应用程序也能以更好、更高效的方式做到这一点?

尾注:我意识到我不是在问一个特定的编程问题。但是从我在这里读到的一些笔记来看,SO是一个程序员社区,我不知道任何其他社区可以很好地回答与编程相关的问题。我遇到的架构问题是我在工作中面临的一个真正的编程相关问题,可悲的是,我没有足够的技能来理解所有最近的架构更改是否有任何缺点导致我们的 Web 应用程序性能显着下降。

感谢您的阅读,我非常感谢任何指向阅读的指示甚至链接,以便更好地理解这一点。

在 chrome 中,打开开发者工具,然后单击网络选项卡。 90% 的时间您可以从那里识别出缓慢的资源。

最新更新