Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cache: warming #423

Open
interim17 opened this issue Oct 23, 2024 · 0 comments
Open

Cache: warming #423

interim17 opened this issue Oct 23, 2024 · 0 comments
Assignees

Comments

@interim17
Copy link
Contributor

interim17 commented Oct 23, 2024

Use Case

To satisfy this UX ticket for a buffering indicator on the website time slider, and potentially to improve performance, and potentially to facilitate playback speed feature, cache warming (pre-streaming of frames prior to playback) we're going to warm the cache!

Open questions:

  • How much are we concerned about server load/compute with warming/pre-streaming?
  • What should the default behavior be? Should this be context dependent at all? Frame size? User on wifi/mobile?
  • How much to warm? A ratio of total frames? Whole trajectories?
  • What degree of control should the front end implementation have over this behavior?
  • Do we want to make changes to the back end? streaming behaviors defined as "resume" or "pause" seem to presume that we stream only during playback, warming can probably be built without functional changes, but the naming may be less accurate/precise afterwards.
  • Control of playback speed is a requested front end feature, but currently playback speed is very much determined by network latency, at least on first play through, total/partial warming makes this a more reasonable thing to build? As does preserving cached frames when possible (multi part cache is out of scope here, but would facilitate this as well).
  • Sort out warming when cache size is limited.

Joe's rough draft idea 10/23:

  • leave existing controller methods in place, no breaking changes
  • don't change octopus/websocket message types (only update these after the fact if more naming accuracy is desired), use intervals and other checks internal to the viewer to manage warming
  • expose props/controller methods to allow front end to initiate warming
  • provided a default ratio of frames for warming, allow front end to update that amount down, or up to 100%
  • allow warming to be initiated pre-playback/time jumps, and then allow playback to proceed with old behavior, or with ongoing buffering in advance of playback position

Acceptance Criteria

  • viewer can request and cache some some of frames without initiating playback
  • if warming initiated, default ratio of frames to pre-stream is 25%
  • decided upon default behavior happens
  • decided upon implementation options/controls are exposed and function as expected

Details

Please provide any helpful specifications

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: 🏃 In Progress
Development

Successfully merging a pull request may close this issue.

1 participant