为什么 wicket 页面被序列化?
Why are wicket pages serialized?
当我请求一个页面时,我看到它在渲染后序列化并存储在磁盘上(和二级缓存中),所以在分离阶段。页面本身也存储在会话中。
当我再次请求页面时,在会话中找到了。所以连载页面没有查阅
当我在另一个会话中请求页面时,页面被重新创建。我认为在这种情况下会使用序列化页面。
那么你能给我一个例子,一个从磁盘(或二级缓存)读取序列化页面的场景吗?
查看此 url 跟踪:
- 将您的浏览器定向到您的应用程序:
http://localhost:8080/
- Wicket 创建主页实例并重定向到:
http://localhost:8080/?0
- 再次将您的浏览器定向到您的应用程序:
http://localhost:8080/
- Wicket 创建主页的另一个实例并重定向到
http://localhost:8080/?1
- 现在按后退按钮,以便您的浏览器再次请求第一个实例:
http://localhost:8080/?0
第一个页面实例现在已从磁盘反序列化。
http 会话保持 live 仅对上一个请求周期中使用过的页面的引用。任何较旧的页面仅在磁盘中。如果您的用户使用浏览器后退按钮,则会从磁盘加载旧实例。
磁盘上的一个文件用于存储每个会话的页面。 I.e.different 用户有不同的文件和他们自己的页面。共享文件将是一个安全问题,就像共享 http 会话一样。
额外信息:磁盘存储是 Wicket 的一部分,用作默认持久存储。 WicketStuff-DataStores 模块提供 Redis、Hazelcast、Cassandra 和 Memcached 的实现。如果您希望旧页面在 Web 服务器集群中可用,则可以使用它们。
当我请求一个页面时,我看到它在渲染后序列化并存储在磁盘上(和二级缓存中),所以在分离阶段。页面本身也存储在会话中。
当我再次请求页面时,在会话中找到了。所以连载页面没有查阅
当我在另一个会话中请求页面时,页面被重新创建。我认为在这种情况下会使用序列化页面。
那么你能给我一个例子,一个从磁盘(或二级缓存)读取序列化页面的场景吗?
查看此 url 跟踪:
- 将您的浏览器定向到您的应用程序: http://localhost:8080/
- Wicket 创建主页实例并重定向到: http://localhost:8080/?0
- 再次将您的浏览器定向到您的应用程序: http://localhost:8080/
- Wicket 创建主页的另一个实例并重定向到 http://localhost:8080/?1
- 现在按后退按钮,以便您的浏览器再次请求第一个实例: http://localhost:8080/?0
第一个页面实例现在已从磁盘反序列化。
http 会话保持 live 仅对上一个请求周期中使用过的页面的引用。任何较旧的页面仅在磁盘中。如果您的用户使用浏览器后退按钮,则会从磁盘加载旧实例。
磁盘上的一个文件用于存储每个会话的页面。 I.e.different 用户有不同的文件和他们自己的页面。共享文件将是一个安全问题,就像共享 http 会话一样。
额外信息:磁盘存储是 Wicket 的一部分,用作默认持久存储。 WicketStuff-DataStores 模块提供 Redis、Hazelcast、Cassandra 和 Memcached 的实现。如果您希望旧页面在 Web 服务器集群中可用,则可以使用它们。