Сайт широкое кэширование с Django - проблемы с защищенными паролем страницами на выходе из системы

Как помощник в направляющих:

def tag_cloud (strings, counts)
    max = counts.max
    strings.map { |a| "<span style='font-size:#{((counts[strings.index(a)] * 4.0)/max).ceil}em'>#{a}</span> "  }
end

Вызов это от представления:

<%= tag_cloud($artists, $counts) %>

Это производит <span style='font-size:_em'> элементы в массиве, который будет преобразован в строку в представлении для окончательного рендеринга как так:

<span style='font-size:3em'>the roots</span>
<span style='font-size:2em'>michael jackson</span> 
<span style='font-size:4em'>billy idol</span> 
<span style='font-size:1em'>more</span> 
<span style='font-size:1em'>and more</span> 
<span style='font-size:2em'>and_YET_MORE</span> 

было бы лучше иметь class атрибут и сослаться на классы в таблице стилей, как упомянуто Brendan выше. Намного лучше, чем использование h1-h6 семантически и существует меньше багажа стиля с <span>.

5
задан Peter Mortensen 23 December 2009 в 19:25
поделиться

2 ответа

Я столкнулся с аналогичными проблемами. Стандартный способ Django - отключить кеш для аутентифицированных пользователей.

#settings.py
CACHE_MIDDLEWARE_ANONYMOUS_ONLY=True

Он отлично работает, если разные пользователи видят разные страницы (например, их имя пользователя на них) и у вас не может быть для них одной версии.

Но если есть только 2 версии страницы: для аутентифицированных пользователей и для в других случаях нецелесообразно полностью отключать кеш для аутентифицированных пользователей. Я написал приложение , которое, помимо всего прочего, позволяет точно настроить кеш в этом случае.

Обновление.

Кстати: вы упомянули, что когда вы нажимаете кнопку «Обновить», нужная версия страницы получен. Это означает, что проблема связана с кешем на стороне клиента (заголовок Expires или E-tag), а не с кешем сервера.

7
ответ дан 14 December 2019 в 04:42
поделиться

С точки зрения защищенной паролем части сайта, проверяете ли вы, зарегистрирован ли пользователь или анонимен, прежде чем получать данные (и, возможно, переносить данные из кеша)?

Вам следует . Django поможет вам, имея декоратор, требующий входа в систему, который вы можете разместить в представлении. Взгляните на это: http://docs.djangoproject.com/en/dev/topics/auth/#the-login-required-decorator

1
ответ дан 14 December 2019 в 04:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: