Problem/Motivation
With polling enabled, the refresh endpoint returns the whole poll payload every interval, almost always unchanged. Measured: 172,673 bytes and ~1.8 s every 30 s per placement. The current set does not address the poll payload size.
Steps to reproduce
- Enable polling and watch the refresh request on a 200+ comment thread.
- Observe the full payload is re-sent each interval with no change.
Proposed resolution
- Compute an ETag from the comment list tag checksum plus the max comment changed timestamp.
- Return 304 when the client's ETag matches, with the same freshness guarantees.
Remaining tasks
- Verify the common unchanged poll becomes a 304.
User interface changes
None, beyond less network traffic.
API changes
Adds ETag support to the refresh route.
Data model changes
None anticipated.
AI-Generated: Yes (Used Opus 5 and DeepSeek Flash to review and discover these issues)
Comments
Comment #3
freelockShipped in Alpha3 - follow-on issue #3623884: Conditional polling must preserve pending deliveries and personalized refresh state.