java - 来自 Google App Engine 的网页中的静态图像

标签 java google-app-engine servlets google-cloud-storage

我正在将一个旧的 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/

相关文章:

javascript - 如何访问从 JSP 传递的参数作为 HTML 页面的隐藏输入?

java - 在jsp中注销时禁用后退按钮

java - GAE JPA @OneToMany orphanRemoval + Cascade 未按预期工作

google-app-engine - App Engine 应用程序计划在 7 天内尽快删除

java - 需要使用 TestNG 在 java 类中循环

java - 使用 compareTo() 方法对 String 数组的 ArrayList 进行排序

python - dev_appserver.py 无法发出 SSL 请求的解决方法

java - 我们是否有任何机制可以使用 Keycloak IDP 的 java servlet 适配器在客户端应用程序上进行注销后 Activity ?

java - 为 lwpd.xsp.core 源运行调试 session

java - 有什么方法可以用一种动态类实例化的形式来简化这个?