Что лучший способ состоит в том, чтобы иметь дело с кэшем и кнопкой "Назад" браузера?

numpy не установлен на рабочих (виртуальных) машинах. Если вы используете anaconda, очень удобно загружать такие зависимости python при развертывании приложения в режиме кластера. (Поэтому нет необходимости устанавливать numpy или другие модули на каждой машине, вместо этого они должны быть в вашем anaconda). Во-первых, застегните свою anaconda и поместите zip-файл в кластер, а затем вы можете отправить задание, используя следующий скрипт.

 spark-submit \
 --master yarn \
 --deploy-mode cluster \
 --archives hdfs://host/path/to/anaconda.zip#python-env
 --conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=pthon-env/anaconda/bin/python 
 app_main.py

Пряжа скопирует anaconda.zip из пути hdfs каждому работнику и используйте pthon-env / anaconda / bin / python для выполнения задач.

См. Запуск PySpark с Virtualenv может предоставить дополнительную информацию.

9
задан Chris 26 September 2008 в 19:38
поделиться

4 ответа

Можно попытаться использовать HttpResponse. Свойство Cache, если это помогло бы:

Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetValidUntilExpires(false);
Response.Cache.VaryByParams["Category"] = true;

if (Response.Cache.VaryByParams["Category"])
{
   //...
}

Или мог мог заблокировать кэширование страницы в целом с HttpResponse. CacheControl, но его, удержанный от использования в пользу свойства Cache выше:

Response.CacheControl = "No-Cache";

Править: ИЛИ Вы могли действительно сойти с ума и сделать все это вручную:

Response.ClearHeaders();
Response.AppendHeader("Cache-Control", "no-cache"); //HTTP 1.1
Response.AppendHeader("Cache-Control", "private"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "no-store"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "must-revalidate"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "max-stale=0"); // HTTP 1.1 
Response.AppendHeader("Cache-Control", "post-check=0"); // HTTP 1.1 
Response.AppendHeader("Cache-Control", "pre-check=0"); // HTTP 1.1 
Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.1 
Response.AppendHeader("Keep-Alive", "timeout=3, max=993"); // HTTP 1.1 
Response.AppendHeader("Expires", "Mon, 26 Jul 1997 05:00:00 GMT"); // HTTP 1.1 
7
ответ дан 4 December 2019 в 13:51
поделиться

Насколько я знаю (или по крайней мере читали), ее лучшее, чтобы попытаться не работать в ответ на пользовательские события, а скорее думать "на странице"..

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

Т.е. если шаг 3 выполняет некоторые данные chages, то пользователь нажимает назад (к шагу 2) и нажимает затем снова, то проверки приложения, чтобы видеть, были ли изменения внесены.. Или идеально, это не вносит трудных изменений, пока пользователь не нажимает "OK" на конец.. Таким образом, все изменения хранятся, и можно повторно заполнить форму на основе ранее вводимых значений на загрузке, каждый раз..

Я надеюсь, что это имеет смысл :)

6
ответ дан 4 December 2019 в 13:51
поделиться

RFC 2616 §13.13 говорит, что История и Кэш являются разными вещами. Не должно быть абсолютно никакого пути к кэшу для влияния на Кнопку "Назад".

Если какая-либо комбинация HTTP-заголовков влияет на Кнопку "Назад", это - ошибка в браузере … за одним исключением.

В HTTPS браузеры интерпретируют Cache-control: must-revalidate как запрашивают обновить страницы, когда Кнопка "Назад" используется (Mozilla называет ее "глупым режимом банка"). Это не поддерживается в плоскости HTTP.

2
ответ дан 4 December 2019 в 13:51
поделиться

Лучший способ иметь дело с ним состоит в том, чтобы, вероятно, поместить директиву без кэшей в Ваши страницы ASP.NET (или основная страница при использовании одного). Я не думаю, что существует способ иметь дело с этим непосредственно в Вашем коде ASP.NET (так как решение кэша происходит на клиенте).

Что касается MVC, не знайте, как Вы выполнили бы это (предположение, что это отличается от основанного на веб-формах ASP.NET); я не использовал его.

0
ответ дан 4 December 2019 в 13:51
поделиться
Другие вопросы по тегам:

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