Кэширование форм в Firefox и autocomplete

Из разряда «каждый день узнаешь что-то новое». В Firefox (и, возможно, в других браузерах) применяется агрессивное кэширование форм. После обновления страницы, даже если она действительно обновилась, а не была взята из кэша, браузер восстанавливает значения элементов, установленные или введенные пользователем. Это относится, например, к состоянию чекбоксов — на этом месте я и задумался. Получается, что страницу мы перегенерировали, состояние чекбоксов указали (checked="checked" или пустое), но браузер расставил галочки так, как они стояли до перезагрузки.

В интернете имеют хождение два решения.

  1. Отправлять заголовок Cache-Control: no-store — попробовал, не сработало. По крайней мере, на Firefox 23.0.1. В принципе, логично, ведь к кэшированию страниц это не имеет прямого отношения, это «фича».
  2. Указывать autocomplete="off" внутри тега <form> — сработало. Да, это не валидный XHTML, но это помогает. Можно указывать не для всей формы, а для конкретных ее элементов. Еще кое-что интересное, в том числе про валидацию, есть в статье «Отключайте autocomplete».