Просто сохраните длину в переменной сначала.
var len = a.length;
for (var i = 0; i < len; i++) {
var element = a[i];
}
Несмотря на то, что базы данных регулярно хранят много строк в любой данной таблице, иметь таблицу только с одной строкой не особенно дорого, если у вас нет (m) индексов, что приведет к потере места. Фактически, большинство баз данных создают множество однострочных таблиц для реализации некоторых функций, таких как монотонные последовательности, используемые для генерации первичных ключей. Я рекомендую вам создать для этого обычную модель.
Одно из решений, которое я использовал в прошлом, - использовать функцию кеширования Django. Вы устанавливаете значение True
со сроком действия один день (в вашем случае). Если значение не установлено, вы загружаете канал, в противном случае вы ничего не делаете.
Вы можете см. мое решение здесь: Импорт ваших фотографий Flickr с помощью Django
Файловая система - это правильная технология для «сохранения единственного значения».
In settings.py:
RSS_FETCH_DATETIME_PATH=os.path.join(
os.path.abspath(os.path.dirname(__file__)),
'rss_fetch_datetime'
)
In your rss fetch скрипт:
from django.conf import settings
handler = open(RSS_FETCH_DATETIME_PATH, 'w+')
handler.write(int(time.time()))
handler.close()
Где бы вы ни читали:
from django.conf import settings
handler = open(RSS_FETCH_DATETIME_PATH, 'r+')
timestamp = int(handler.read())
handler.close()
Но cron - правильный инструмент, если вы хотите «запускать команду каждый день», например, в 5 утра:
0 5 * * * /path/to/manage.py runscript /path/to/retreive/script
Конечно, вы все равно можете записать метку времени последнего обновления в файл в конце сценария получения и использовать ее где-нибудь еще,если это имеет для вас смысл.
В заключение, цитируя Кена Томпсона:
Один из моих самых продуктивных дней был выбросив 1000 строк кода.
Если они нужны только для целей кеширования, почему бы не сохранить их в memcached?
С другой стороны, если вы используете эти данные для других целей (например, отображаете их на странице , или сделать какие-то вычисления и т. д.), то я бы сохранил это в новой модели - в Django вся персистентность строится поверх базы данных через модели, и я бы не стал пытаться использовать другие «умные» решения.
One thing I used to do when I was deving with PHP, was to store the xml somewhere, but with a new tag inserted to hold the timestamp of the latest retrieval. It wasn't great, but it was quick and simple.
Если это просто, то возникнет идея просто сохранить его в файловой системе ... почему вы не можете этого сделать? Например, у вас может быть модуль siteconfig
в одном из ваших приложений, в котором хранятся такие данные. Это может загружать данные из определенного файла, который может быть текстом, JSON, ConfigParser, pickle или любым подходящим форматом. Просто импортируйте куда-нибудь siteconfig
, и он сможет загрузить данные и сделать их доступными для других модулей вашего сайта. Вы можете легко расширить это, чтобы содержать объект, похожий на dict, с рядом настроек (например, если у вас когда-либо было несколько каналов, но вы не хотите иметь модель только для 2-3 строк, вы можете легко удерживать последние- извлекаемое время для каждого фида в слове с ключом URL фида).
Создать сеансовый ключ, который будет храниться вечно, и обновлять временную метку канала каждый раз, когда вы к нему обращаетесь.