OK, in case this happens to anyone else over the life of the universe, here's what happened.
I tried all of Kyle's solutions, and they all produced different types of odd behavior. I finally found out that the host was providing its own server-based caching that conflicted with Joomla. I had upgraded the hosting plan a couple weeks ago to a business plan that allows a dedicated IP and an SSL certificate, among other things. By default, site caching was enabled with this upgraded service. Once I asked the host to turn it off, everything was fine.
Kyle, thanks so much for looking at this. Without you telling me that it was a caching issue, I doubt I would have found the problem.