title: HTTP: Web page polling without JavaScript?
body: <p>I have a web service where any user can start a process that takes somewhere between 15 seconds and 10 minutes to complete. The process is started with a POST request and the user is redirected to page that shows current progress of the process (e.g. <code>https://example.com/progress-status/123</code>).</p>
  
  <p>My current implementation is to send HTTP header <code>Refresh</code> with value <code>n;url=https://example.com/progress-status/123</code> where <code>n</code> is automatically changed between 5 and 120 according to expected time to completion and current server load. As a result, the progress status is automatically updated once every 5 seconds or more. After the progress has been completed, the status page will immediately redirect (HTTP 301 and <code>Location</code> header) to the completed job.</p>
  
  <p>This works otherwise nicely but causes ugly flickering in Opera 42.0, which considers this to mean forced reload and skip all caches. I'm sending correct <code>Cache-Control</code> headers so using cached result for everything would be fine but <code>Refresh</code> header causes all caches to be ignored. (The status page contains some images and links to static CSS files so it does not make any sense to refresh those resources for every poll request.)</p>
  
  <p><strong>Is there any way to implement polling just the HTML page without JavaScript?</strong> I know that I could poll just the current status with Ajax query and then update the part of the currently visible page with the updated information. However, that will not work if user disables JavaScript. Rest of the service works without JavaScript so requiring JavaScript for something this simple seems bad. (I already have a GET submit button on the progress status page to force refresh manually.)</p>
  
  <p>I know that HTTP <code>Refresh</code> header is not defined in HTTP 1.0 or HTTP 1.1 so this is a bit grey area. I'm looking for something that works in real world without JavaScript.</p>