我正在将一个旧的 Java 项目移植到 GAE。它有一些 servlet,可以生成其中包含静态图像的 html 页面。在原始项目中,这些图像存储在 servlet 旁边的文件系统上。
我首先尝试使用 GCS,我已经上传了我的文件并授予了公共(public)读取权限。在这种情况下,我可以通过公共(public)链接访问这些文件,我可以将这些链接嵌入到 HTML 输出中。但我有一种感觉,这不是正确的解决方案。加载时间似乎相当慢,就像图像不会“内部传输”一样,而且我必须为每个图像提供权限。
所以我的问题是,如何获取位于 GAE 应用程序中 GCS 上的文件的“内部”URL?
我找到了一些Java examples ,但就我而言,我认为我不需要源中的图像对象,我只需要一个 URL 将其传递到 HTML 源。
据我所知,我可以简单地部署以源作为资源的镜像,但镜像数量相当多。
如果还有其他灵魂,例如数据存储,我也愿意,但我认为 GCS 是最简单的。
最佳答案
Google 云存储是加载图像的最快选项。浏览器读取链接并要求服务器(在本例中为 GCS)传送图像。没有可以更快地工作的“内部”URL - 速度反射(reflect)了 GCS 和请求图像的浏览器之间的带宽/距离。
您可以使用 CDN 来加快速度,您的图像存储在世界各地的本地服务器上。只有当您向大量用户提供内容时,它才有意义,并且它是页面加载速度的关键部分。
加快页面加载时间的另一种方法是使用图像 Sprite 而不是图像。通过这种方式,您可以减少从浏览器到服务器(即 GCS)的请求数量。如果您的图像不经常更改,并且大多数页面需要相同的图像“集合”(即不动态显示),那么这是一个非常好的解决方案。
关于java - 来自 Google App Engine 的网页中的静态图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22618766/