я могу использовать “http заголовок”, чтобы проверить, была ли динамическая страница изменена

Вы можете перебирать каждый элемент во втором массиве и использовать этот элемент для создания маски, а затем суммировать все значения True:

output = []
for el in array2:
    output.append(np.sum(array1 < el))

Вывод:

[111 ]

Ваш подход почти правильный. Я немного прибрался. Вы можете перебирать сами элементы вместо их индексов.

failed = []
for el2 in array2:
    number1 = 0
    for el1 in array1:
        if el1 < el2:
            number1 += 1
    failed.append(number1)

Вывод:

[1, 2, 3, 5, 6]

Я бы все равно использовал первый ответ, хотя он должен быть немного быстрее.

5
задан bignose 1 May 2009 в 08:57
поделиться

5 ответов

Даже при том, что Вы могли бы думать, что это устарело, я всегда находил, что статья Simon Willison об Условном выражении ДОБИРАЕТСЯ, чтобы быть более, чем полезной. Пример находится в PHP, но это столь просто, что можно адаптировать его к другим языкам. Здесь это - пример:

function doConditionalGet($timestamp) {
    // A PHP implementation of conditional get, see 
    // http://fishbowl.pastiche.org/archives/001132.html
    $last_modified = substr(date('r', $timestamp), 0, -5).'GMT';
    $etag = '"'.md5($last_modified).'"';

    // Send the headers
    header("Last-Modified: $last_modified");
    header("ETag: $etag");

    // See if the client has provided the required headers
    $if_modified_since = isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ?
        stripslashes($_SERVER['HTTP_IF_MODIFIED_SINCE']) :
        false;

    $if_none_match = isset($_SERVER['HTTP_IF_NONE_MATCH']) ?
        stripslashes($_SERVER['HTTP_IF_NONE_MATCH']) : 
        false;

    if (!$if_modified_since && !$if_none_match) {
        return;
    }

    // At least one of the headers is there - check them
    if ($if_none_match && $if_none_match != $etag) {
        return; // etag is there but doesn't match
    }

    if ($if_modified_since && $if_modified_since != $last_modified) {
        return; // if-modified-since is there but doesn't match
    }

    // Nothing has changed since their last request - serve a 304 and exit
    header('HTTP/1.0 304 Not Modified');
    exit;
}

С этим можно использовать глаголы HTTP, ДОБИРАЮТСЯ или НАПРАВЛЯЮТСЯ (я думаю, что это также возможно с другими, но я не вижу причины использовать их). Все, что необходимо сделать, добавляет также If-Modified-Since или If-None-Match с соответствующими значениями заголовков Last-Modified или ETag отправленный предыдущей версией страницы. С версии 1.1 HTTP это рекомендуется ETag Last-Modified, но оба сделают работу.

Это - очень простой пример того, как условное выражение ПОЛУЧАЕТ работы. Сначала мы должны получить страницу обычный путь:

GET /some-page.html HTTP/1.1
Host: example.org

Первый ответ с условными заголовками и содержанием:

200 OK
ETag: YourETagHere

Теперь условное выражение получает запрос:

GET /some-page.html HTTP/1.1
Host: example.org
If-None-Match: YourETagHere

И ответ, указывающий на Вас, может использовать кэшированную версию страницы, поскольку только заголовки будут поставленными:

304 Not Modified
ETag: YourETagHere

С этим сервер уведомил Вас, что не было никакой модификации к странице.

Я могу также рекомендовать Вам, другая статья об условном выражении ДОБИРАЕТСЯ: условное выражение HTTP ДОБИРАЕТСЯ для хакеров RSS.

2
ответ дан 15 December 2019 в 06:38
поделиться

Это - точная цель заголовка Завершающего тега, но это должно поддерживаться Вашей веб-платформой, или необходимо заботиться, что приложение правильно отвечает на запросы с Если-соответствием заголовков, If-Not-Match и Если-диапазоном (см. HTTP Ch 3.11).

1
ответ дан 15 December 2019 в 06:38
поделиться

Да, Вы можете и должны использовать HTTP-заголовки для маркировки страниц как неистекшие. Если они являются динамичными, хотя (PHP, ASPX, и т.д.) и/или управляемая база данных, необходимо будет вручную управлять установкой, Истекает заголовок/отправка HTTP, Не Измененный соответственно. ASP.NET имеет некоторые объекты SqlDependency для этого, но они все еще должны настраиваться и управляться. (Не уверенный, если PHP имеет что-то точно так же, как он, но существует, вероятно, что-то в ГРУШЕ если не...),

0
ответ дан 15 December 2019 в 06:38
поделиться

Вы можете, если это использует http заголовки ответа правильно, но это часто пропускается.

Иначе хранение локального md5-хеша содержания могло бы быть полезно для Вас (если нет более легкая строка в содержании, которую Вы могли сцепить). Это не идеально (потому что это - вполне медленный процесс), но это - опция.

0
ответ дан 15 December 2019 в 06:38
поделиться

Last-Modified заголовок будет только полезен для Вас, если программист сайта явно установил его, чтобы быть возвращенным.

Для регулярной, статической страницы Last-Modified метка времени последнего изменения файла HTML. Для динамично сгенерированной страницы сервер не может надежно присвоить a Last-Modified оцените, поскольку это не имеет никакого реального способа знать, как содержание изменилось в зависимости от запроса, столько серверов не генерирует заголовок вообще.

Если Вы управляете страницей, то обеспечение Последнего Измененного заголовка устанавливается, гарантирует проверку на Last-Modified успешно. Иначе Вам, вероятно, придется выбрать страницу, и любой выполняет regex для нахождения измененного раздела (например, дата/время в заголовке новостного сайта). Если никакой такой очевидный маркер не существует, то я был бы предложение второго Oli MD5 на содержании страницы как способ быть уверенным, что это изменилось.

0
ответ дан 15 December 2019 в 06:38
поделиться
Другие вопросы по тегам:

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