提供静态资源

Vert.x-Web附带一个开箱即用的处理程序,用于提供静态Web资源,以便您可以非常轻松地编写静态Web服务器。

服务静态资源,如.html.css.js或任何其他静态资源,您使用的一个实例 StaticHandler

对由静态处理程序处理的路径的任何请求都将导致文件系统上的目录或类路径中的文件被提供。默认的静态文件目录是webroot可以配置的。

在以下示例中,所有对以下路径开始的请求/static/都将从目录中获取webroot

router.route("/static/*").handler(StaticHandler.create());

例如,如果存在具有路径/static/css/mystyles.css请求,静态服务将在目录中查找文件webroot/css/mystyle.css

它还会在类路径中寻找一个名为的文件webroot/css/mystyle.css这意味着你可以将所有的静态资源打包成一个jar文件(或者fatjar)并且像这样分发它们。

当Vert.x首次在类路径上找到资源时,它将其提取并将其缓存在磁盘上的临时目录中,因此每次都不需要执行此操作。

处理程序将处理范围感知请求。当客户端向静态资源发出请求时,处理程序会通过在Accept-Ranges头上声明单元来通知它可以处理范围感知请求然后包含Range具有正确单元和开始和结束索引标题的其他请求将接收到具有正确Content-Range标题的部分响应

配置缓存

默认情况下,静态处理程序将设置缓存头以使浏览器有效地缓存文件。

Vert.x的Web设置标题cache-controllast-modifieddate

cache-controlmax-age=86400默认设置为这相当于一天。这可以根据setMaxAgeSeconds需要进行配置

如果浏览器发送带有if-modified-since标题的GET或HEAD请求,并且该资源自该日期以来未被修改,304则返回状态以告知浏览器使用其本地缓存资源。

如果不需要处理缓存标头,则可以使用禁用setCachingEnabled

当启用缓存处理时,Vert.x-Web将缓存资源的最后修改日期,这样可以避免每次检查实际上次修改日期时的磁盘命中。

高速缓存中的条目具有到期时间,在此之后,磁盘上的文件将被再次检查并更新高速缓存条目。

如果你知道你的文件永远不会在磁盘上发生变化,那么缓存条目将永远不会过期。这是默认设置。

如果您知道服务器运行时您的文件可能会在磁盘上发生更改,那么您可以将文件只读设置为falsesetFilesReadOnly

要在任何时候启用可以在内存中缓存的最大条目数量,请使用 setMaxCacheSize

配置您可以使用的缓存条目的到期时间setCacheEntryTimeout

配置索引页

对根路径的任何请求/都将导致索引页面被提供。默认情况下,索引页是index.html这可以使用配置setIndexPage

更改Web根目录

默认情况下,静态资源将从目录中提供webroot配置此用途 setWebRoot

提供隐藏的文件

默认情况下,服务器将提供隐藏文件(以文件开头.)。

如果你不想隐藏的文件被提供,你可以配置它setIncludeHidden

目录列表

服务器也可以执行目录列表。默认情况下,目录列表被禁用。启用它 setDirectoryListing

当启用目录列表时,返回的内容取决于accept标题中的内容类型

对于text/html目录列表,可以使用配置用于呈现目录列表页面的模板 setDirectoryTemplate

禁用磁盘上的文件缓存

默认情况下,Vert.x会将从类路径提供的文件缓存到磁盘上的文件.vertx中当前工作目录中调用的目录的子目录中。这在将服务部署为生产环境中的fatjar时非常有用,因为每次从类路径提供文件的速度可能会很慢。

在开发过程中,这可能会导致问题,就像在服务器运行时更​​新静态内容一样,缓存的文件将不会被更新的文件提供。

要禁用文件缓存可以提供您vert.x选项的属性fileResolverCachingEnabledfalse为了向后兼容,它也将该值默认为系统属性vertx.disableFileCaching例如,您可以在您的IDE中设置运行配置,以便在运行主类时进行设置。



猜你喜欢

转载自blog.csdn.net/zyydecsdn/article/details/80281053