Строка '_' на самом деле является просто массивом символов [' ', '_', ' ']
.
Таким образом, lines[0:4] = ' _ '
устанавливает первый элемент строк как «», второй - «_», а третий - «». Это объясняет поведение, которое вы наблюдаете.
Если вы пытаетесь сделать первые три элемента списка '_', я бы предложил просто сделать lines[i] = ' _ '
для каждого i, являющегося индексом, который вы хотите заменить этой строкой. Вероятно, есть один способ сделать это, если вы используете библиотечную функцию.
for i in range(4):
lines[i] = ' _ '
Существует несколько подходов для реализации кэширования, httpcontext быть самым легким, но это не обязательно хуже. Смотрите на memcached или Скорость MS, оба из которых могут использоваться в качестве бэкендов для Кэша ASP.NET. Особенно memcached имеет репутацию сделать действительно хорошее задание.
Что касается кэширующейся политики: необходимо решить что работы лучше всего для Вас. Я лично удалил бы полный список из кэша на, обновляют/удаляют вместо того, чтобы пытаться узнать, является ли объект в списке, так как требуется нетривиальное количество времени, и необходимо принять проблемы параллелизма во внимание (блокирующий список, так как кто-то мог бы сделать обновление/удаление другого объекта). Иногда действительно имеет смысл обновлять объект на месте (если у Вас есть полный объект со всеми данными, Вам нужно), иногда это - пустая трата времени, потому что из-за некоторого изменения состояния объект должен переместиться где-то в другом месте (например, когда Вы сортируете по LastChangedDate и т.д.),
Не забывайте оптимизировать свой код DB также так, чтобы не требовалось слишком большого количества времени для обновления вспыхнувшего списка.
Сделав некоторое тестирование и с я сделал полный обзор блока программы кэширования в контексте нашего кода и занес мой опыт в блог с ним. Это очень просто в использовании и достаточно мощно для наших потребностей. Я рекомендовал бы это, мои результаты были занесены в блог здесь.
В Вашем положении я использовал бы шаблон Репозитория для поддержания моего кэша, это работает хорошо на наборы данных базы данных и должно работать одинаково хорошо на кэш в собственном. Если Вы не familar с шаблоном репозитория, проверяете это сообщение от Steven Walther.. Я был бы склонен не соглашаться с предыдущим ответом однако, вынув только объекты, в которых Вы нуждаетесь для модификации и отъезда остальных нетронутых. Это позволит Вам истекать, объекты от кэша независимо из целого списка должны Вы так желать.