Дата последнего изменения файла на веб-сайте - PullRequest
7 голосов
/ 23 июня 2009

Есть ли способ получить дату последнего изменения файла на веб-сайте?

т.е. Вот пример файла, который у меня есть: http://www.ymcadetroit.org/atf/cf/%7B2101903E-A11A-4532-A64D-9D823368A605%7D/Birmingham_Youth_Sports_Parent_Manual.pdf

Ответы [ 8 ]

8 голосов
/ 02 апреля 2016

Перейдите на сайт, о котором вы хотите знать, подождите, пока он полностью загрузится, затем перейдите в адресную строку и напишите:

javascript:alert(document.lastModified)

Появится всплывающее окно с сообщением, когда оно было изменено в последний раз.

6 голосов
/ 24 июня 2009

HTTP намеревается в поле заголовка Last-Modified объявить дату последнего изменения. Но сервер должен знать эту дату.

В статических файлах, содержимое которых отправляется непосредственно клиенту и не интерпретируется сервером другим способом (например, .html, .css, .js), он использует дату последнего изменения этого файла. Но для файлов, которые генерировали контент динамически (PHP, Python и т. Д.), Сценарий должен сам указать эту информацию. Но, к сожалению, многие сценарии этого не делают.

Так что, если присутствует поле заголовка Last-Modified, вы можете использовать эту информацию. Но если нет, вы не можете определить дату последнего изменения.

5 голосов
/ 26 января 2014

Я понимаю, что этому вопросу 4 года, но поиск в Интернете показал, что удовлетворительные ответы остаются редкими. Ответ Петра является частью решения. Когда мне нужно было решить ту же проблему, я начал. Но остальное решение ...

Как он сказал, веб-сервер должен быть настроен на отправку даты последнего изменения ... так как вы настраиваете веб-сервер?

Предполагая, что у вас есть необходимый уровень контроля, вам сначала нужно включить серверные включения. Есть несколько способов сделать это, одним из которых является «xbithack». Хорошая ссылка http://httpd.apache.org/docs/current/howto/ssi.html.

Предполагая, что вы сделали это, вам нужно установить бит выполнения для любого html-файла, который должен анализироваться на стороне сервера. Это можно сделать из командной строки UNIX-подобной системы: chmod u+x file.html или на Mac, используя get-info (command-I) для файла.

Это оставляет фрагмент для фактического помещения в ваш файл, который выглядит следующим образом:

This document last modified <!--#flastmod file="index.html" -->

Так как я нашел много, много рекомендаций, которые не включали это, и просто использовал javascript document.lastModified, я подозреваю, что некоторые серверы дают вам то, что вы хотите с версией javascript, в то время как другие (включая тот, на котором размещены наши материалы) ) нет.

4 голосов
/ 24 июня 2009

Вот код C # для этого:

public DateTime GetLastModifyTime(string url)
{
        WebRequest request = WebRequest.Create(url);
        request.Credentials = CredentialCache.DefaultNetworkCredentials;
        request.Method = "HEAD";

        using (WebResponse response = request.GetResponse())
        {
            string lastModifyString = response.Headers.Get("Last-Modified");
            DateTime remoteTime;
            if (DateTime.TryParse(lastModifyString, out remoteTime))
            {
                return remoteTime;
            }

            return DateTime.MinValue;
        }
}
3 голосов
/ 16 сентября 2014

Чтобы получить дату последнего изменения со стороны клиента, вы можете получить доступ к HTML DOM, используя свойство lastModified, используя JavaScript.

Свойство lastModified получает информацию из головной части, отправленной со всеми веб-запросами. Это значение может быть установлено разработчиками вручную на стороне веб-сервера, поэтому оно может не отражать фактическую дату последнего изменения файла, ответственного за доставку контента.

Пример

<!DOCTYPE html>
<html>
<body>
  
<b>document.lastModified : </b>
<script>document.write( document.lastModified );</script>

</body>
</html>

Определенная команда в JavaScript, которая получает это document.lastModified и может быть легко преобразована в Date объект следующим образом:

var x = new Date(document.lastModified);

Более подробную информацию можно найти на сайте, который я использовал в качестве справочного. w3 школ: HTML DOM lastModified Property

2 голосов
/ 23 июня 2009

Я считаю, что веб-сервер должен быть настроен на отправку даты последнего изменения в HTTP-заголовке, это, безусловно, один из способов. Ознакомьтесь с разделом 14.29 Последнее изменение этого документа:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

0 голосов
/ 04 июня 2014

Я не специалист по заголовкам, но думаю, что вы ищете это:

Существует способ проверить дату изменения файла: Просмотр заголовков HTTP в Google Chrome?

Проверьте там (Инструменты разработчика Chrome / Сеть / Выбранный файл / Заголовки) переменную "If-Modified-Since".

До сих пор это помогало мне достичь того, о чем вы просите, получить дату изменения файла.

0 голосов
/ 23 июня 2009

С простым HTML, нет, вы не можете.

Вы можете использовать PHP, ASP или любой другой язык на стороне сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...