在appengine中,index.html是作为一个静态文件还是首先涉及到一个servlet容器?
例如,假设我有 blabla.com 主机 war/index.html 并且用户转到 http:/blbla.com/
我不希望首先命中 servlet 容器以确定它是在 web.xml 中配置的 welocme-file-list 的一部分,然后 appengine 才会将其作为静态文件提供。避免服务器往返的唯一方法是让用户点击 url http://blabla.com/index.html ?
根据文档 https://developers.google.com/appengine/docs/java/gettingstarted/staticfiles说:
默认情况下,App Engine 将 WAR 中的所有文件作为静态文件提供,JSP 和 WEB-INF/中的文件除外。对路径与静态文件匹配的 URL 的任何请求都会直接将文件提供给浏览器——即使该路径也与 servlet 或过滤器映射匹配。
那么现在的问题是:如果我在欢迎文件列表中指定了“index.html”并且用户点击了 http://blabla.com,那么以下哪项是正确的?
- appengine 知道它必须直接将 index.html 作为静态文件提供服务,并且我的 servlet 容器不会检查欢迎文件列表。
- appengine 不知道它必须从静态文件提供 index.html,我的 servlet 容器被命中只是为了检查 welcome-files-list,然后允许 appengine 将其作为静态文件获取。
在情况 2 中:将 html 文件用作静态文件的唯一方法是让用户直接在 url 中点击它们,即 http://blabla.com/index.html ? 这是非常重要的时刻,因为这意味着您的 servlet 容器可能会在每次请求时做额外的工作来解析欢迎文件列表,这会导致 cpu 浪费,如果用户指定了 html 文件的直接路径,这是可以避免的。
最佳答案
默认情况下,App Engine 将 WAR 中的所有文件作为静态文件提供,JSP 和 WEB-INF/中的文件除外。对路径与静态文件匹配的 URL 的任何请求都会直接将文件提供给浏览器——即使该路径也与 servlet 或过滤器映射匹配。您可以使用 appengine-web.xml 文件配置 App Engine 将哪些文件视为静态文件。
但您不能将 url“/”设置为静态文件。
参见 documentation .
关于java - 静态 index.html 文件 - servlet 容器是否首先被命中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10046003/