XMLHttpRequest & ldquo; GET & rdquo; каждые x секунд [дублировать]

Самый простой способ сделать это в современном Fortran - это модули.

Рассмотрим

module globals
  implicit none
  integer :: x
end module globals

program main
  use globals
  implicit none
  call mysub
  print *,x
end program main

subroutine mysub
  use globals
  implicit none
  x = 1
end subroutine mysub

В этой парадигме вы указываете свои «глобальные» переменные в модуле и use, что модуль везде, где вы хотите получить доступ к ним.

Если вы просто используете это для объявления констант (параметров), вы можете упростить это:

module globals
  implicit none
  integer, parameter :: x=1
end module globals

program main
  use globals
  implicit none
  print *,x
end program main

. Более старый метод для этого включает блоки common и include файлов, которые объявили о каждой процедуре, к которой они обращались. Если вы найдете учебник, посвященный блочному методу common, я советую вам игнорировать их и избегать их использования в новом коде.

17
задан Muggy Ate 23 February 2013 в 16:30
поделиться

4 ответа

Самый простой способ - добавить исходную строку с некоторым случайным параметром, который игнорируется на стороне сервера

<script src="mySaveFiles.json?nocache=123" ></script>

. Одним из решений было бы сгенерировать элемент сценария с помощью JavaScript и добавить текущее время например:

var el = document.createElement( script );
el.src = 'mySaveFiles.json?nocache=' + (new Date()).getTime();
document.head.appendChild( el );

Таким образом, браузер никогда не будет кэшировать JSON-файл, поскольку он выглядит как отдельный файл (из-за параметра) в каждом вызове.

35
ответ дан Sirko 22 August 2018 в 14:29
поделиться
  • 1
    поэтому вместо того, чтобы иметь тег в заголовке с src mySaveFiles, я бы назвал код, который вы там предоставили, в функции, которая сначала запускается, когда страница загружается, и это было бы так, как я ее описал? – Muggy Ate 23 February 2013 в 16:38
  • 2
    @MuggyAte В принципе да, – Sirko 23 February 2013 в 16:39
  • 3
    Благодарю. Я пробовал некоторые из других методов, которые были предложены некоторыми другими людьми, но этот, кажется, самый успешный в достижении того, что я хотел. благодаря – Muggy Ate 23 February 2013 в 17:27
  • 4
    Возможно, вам придется добавить type="application/json" в тег скрипта: например, <script type="application/json src="mySaveFiles.json?nocache=123" ></script> – Flea 26 January 2018 в 18:43

, если вы не хотите кэшировать какие-либо данные, тогда вы можете использовать метатег ниже

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="expires" content="-1">
0
ответ дан Gordon 22 August 2018 в 14:29
поделиться
  • 1
    Хорошо было бы неплохо, если бы я мог кэшировать все, кроме json-файла. Я уже пробовал это, но, похоже, он значительно снижает производительность. Я думаю, что это будет мое последнее средство, если я найду лучшую альтернативу :( – Muggy Ate 23 February 2013 в 16:45
  • 2
    Помогает ли это остановить кеш в файле JSON? Его для отдельной страницы HTML, правильно? @Ranjith – Vaishak 17 August 2016 в 06:15

Две опции:

  1. Добавьте параметр запроса mySaveFiles.json? t = timestamp в конец URL.
  2. Вытяните файл с помощью объекта XmlHttpRequest ( вам все равно может понадобиться добавить временную метку в зависимости от сервера).
2
ответ дан Kevin Seifert 22 August 2018 в 14:29
поделиться

Один из моих фаворитов - это просто htaccess (если это возможно для вас, я не вижу этого)

Отключить кеш для нескольких расширений

<FilesMatch ".(pl|php|cgi|spl|scgi|fcgi|json)$">
    Header unset Cache-Control
</FilesMatch>

Отключить кеш для только 1 расширение

<Files .json>
    Header unset Cache-Control
</Files>

Я нашел его здесь: http://www.queness.com/post/5421/17-useful-htaccess-tricks-and-tips

6
ответ дан Ron van der Heijden 22 August 2018 в 14:29
поделиться
  • 1
    О, это потрясающее решение, которое я должен попробовать прямо сейчас :) надеюсь, это будет проще, чем добавить отметку времени на вещи o.o – Muggy Ate 23 February 2013 в 16:43
  • 2
    хорошо, я столкнулся с проблемой здесь. Я вставил это и отфильтровал материал, который я не хочу, но в верхней части страницы он имеет эту строку текста, которая говорит, что Header unset Cache-Control и я не хочу, чтобы эта строка отображалась. что я делаю? – Muggy Ate 23 February 2013 в 17:05
  • 3
    Что вы точно ввели в свой код? Я обновляю для отключения кеша для 1 расширения – Ron van der Heijden 23 February 2013 в 17:55
Другие вопросы по тегам:

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