@@ -354,37 +354,41 @@ func (qm *QueueManager) prepareQueuePageData(position int) QueuePageData {
354354// serveCustomTemplate attempts to serve the custom queue page template.
355355// Returns true if successful, false if the template could not be served.
356356func (qm * QueueManager ) serveCustomTemplate (rw http.ResponseWriter , data QueuePageData ) bool {
357- if ! fileExists (qm .config .QueuePageFile ) {
358- return false
359- }
360-
361- content , err := os .ReadFile (qm .config .QueuePageFile )
362- if err != nil {
363- if qm .config .Debug {
364- log .Printf ("[Queue Manager] Error reading template file: %v" , err )
365- }
366- return false
367- }
368-
369- queueTemplate , parseErr := template .New ("QueuePage" ).Delims ("[[" , "]]" ).Parse (string (content ))
370- if parseErr != nil {
371- if qm .config .Debug {
372- log .Printf ("[Queue Manager] Error parsing template: %v" , parseErr )
373- }
374- return false
375- }
376-
377- // Set content type
378- rw .Header ().Set ("Content-Type" , qm .config .HTTPContentType )
379- rw .WriteHeader (qm .config .HTTPResponseCode )
380-
381- // Execute template
382- if execErr := queueTemplate .Execute (rw , data ); execErr != nil && qm .config .Debug {
383- log .Printf ("[Queue Manager] Error executing template: %v" , execErr )
384- return false
385- }
386-
387- return true
357+ // Make sure headers are set before any content is written
358+ rw .Header ().Set ("Content-Type" , qm .config .HTTPContentType )
359+ rw .Header ().Set ("Cache-Control" , "no-store, no-cache, must-revalidate" )
360+ rw .Header ().Set ("Pragma" , "no-cache" )
361+ rw .WriteHeader (qm .config .HTTPResponseCode )
362+
363+ if ! fileExists (qm .config .QueuePageFile ) {
364+ return false
365+ }
366+
367+ content , err := os .ReadFile (qm .config .QueuePageFile )
368+ if err != nil {
369+ if qm .config .Debug {
370+ log .Printf ("[Queue Manager] Error reading template file: %v" , err )
371+ }
372+ return false
373+ }
374+
375+ queueTemplate , parseErr := template .New ("QueuePage" ).Delims ("[[" , "]]" ).Parse (string (content ))
376+ if parseErr != nil {
377+ if qm .config .Debug {
378+ log .Printf ("[Queue Manager] Error parsing template: %v" , parseErr )
379+ }
380+ return false
381+ }
382+
383+ // Execute template with appropriate data
384+ if execErr := queueTemplate .Execute (rw , data ); execErr != nil {
385+ if qm .config .Debug {
386+ log .Printf ("[Queue Manager] Error executing template: %v" , execErr )
387+ }
388+ return false
389+ }
390+
391+ return true
388392}
389393
390394// serveFallbackTemplate serves the built-in default queue page template.
0 commit comments