Использование дружественных URL, чтобы избежать проблем с кешем - PullRequest
0 голосов
/ 29 июня 2011

В моем приложении (*) мне иногда нужно открыть (в браузере пользователя по умолчанию) URL с некоторыми параметрами.

На некоторых компьютерах у меня была проблема с кешем, даже если я отправляю другие параметры, браузер открывает страницу со старыми параметрами.

Я попытался добавить метку времени в качестве первого параметра:

но, тем не менее, на некоторых компьютерах это не решило проблему.

Интересно, поможет ли использование дружественных URL-адресов избежать проблемы с кешем для всех пользователей, всех браузеров, всех настроек по умолчанию и т. Д.

[Мой источник для использования дружественных URL:

]

Известны ли вам какие-либо неудобства при использовании этого метода передачи параметров?

Спасибо

Атар.

(*) Мое приложение представляет собой исполняемый файл (VB .Net) Одним из пунктов меню приложения является открытие URL-адреса с использованием браузера по умолчанию:

 '-- Create temporary *.url file and open it
  Try
    Dim line1 As String = "[InternetShortcut]"
    Dim line2 As String = "URL=" & sUrl
    Dim dst As String = GetSystemPathTemp() & "myAppTemp.url"

    Dim sw As New System.IO.StreamWriter(dst, False)
    sw.WriteLine(line1)
    sw.WriteLine(line2)
    sw.Close()

    System.Diagnostics.Process.Start(Chr(34) & dst & Chr(34))   

URL-адрес - это форма, параметры - это некоторые поля формы, поэтому пользователю не нужно их вводить.

Обычно пользователь заполняет форму и перенаправляется на страницу «Спасибо».

Моя проблема: в следующий раз, когда пользователь щелкнет меню и откроет URL \ форму, в форме должны быть разные значения полей, в соответствии с текущим этапом приложения, НО на некоторых компьютерах \ пользователи \ браузеры первый URL кэшируется, и после этого все формы заполняются начальными полями, поэтому пользователь должен вручную редактировать их (если он заметил проблему), в противном случае я получаю результаты формы с неточной информацией - новые пользовательские заметки с Предыдущие неправильные значения полей.

Моя страница формы теперь начинается с -

<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");   // Date in the past

До сегодняшнего дня он начинался со всех следующих опций -

<?php
//disable all browser caching MUST BE FIRST LINES WITH NO PRECEEDING SPACES ETC
// Date in the past
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

// always modified
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

// HTTP/1.1
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);

// HTTP/1.0
header("Pragma: no-cache");

Файл "myAppTemp.url" обновлен, но браузер открывает более старую ссылку.

Ответы [ 2 ]

3 голосов
/ 29 июня 2011

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

В конце концов, вы никогда не сможете полностью разрешить кэширование клиентов, поскольку они могут делать все, что захотят.Однако с некоторыми чувственными заголовками у вас все будет в порядке.

<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
?>

От: http://php.net/manual/en/function.header.php

0 голосов
/ 04 июля 2011

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

Это может быть проблемой, если вы при загрузке страницы генерируете URL-адреса динамически. Как только пользователь уходит с этой страницы, а затем возвращается, у него будет тот же URL на странице, потому что эта страница была кэширована.

РЕДАКТИРОВАТЬ:

Я думаю, что вы можете обойти создание файла .url, поскольку Windows поддерживает открытие http-ссылок напрямую, прочитайте эту статью: http://support.microsoft.com/kb/305703

Таким образом вы, по крайней мере, устраните один источник ошибок для вашей проблемы.

...