Какие заголовки отправляет исходный сервер (веб-сервер) с вашим контентом? Я полагаю, что для того, чтобы быть кешируемым с помощью Squid, вы должны указать либо Last-Modified, либо ETag в заголовке ответа. Веб-серверы обычно делают это автоматически для статического контента, но если ваш контент обслуживается динамически (даже если из статического источника), тогда вы должны убедиться, что они есть, и обработать заголовки запроса, такие как If-Modified-Since и If- None-Match.
Кроме того, так как я указал на этот вопрос вашим последующим вопросом о сессиях - есть ли в ответе заголовок "Vary"? Например, «Vary: Cookie» сообщает кэшам, что содержимое может варьироваться в зависимости от заголовка Cookie в запросе: поэтому статическое содержимое хочет удалить это. Но ваш веб-сервер может добавлять это ко всем запросам, если есть сеанс, независимо от статического / динамического характера обслуживаемых данных.
По моему опыту, некоторые эксперименты с заголовками HTTP, чтобы увидеть, как влияют на кэширование, имеют большую выгоду: я помню, что обнаружил, что решения не всегда были очевидны.