長い間投げた後、私はjqueryロード方法を使用して、このリクエストを2度目に送信できなかったのは奇妙でした。 baiduがいます。彼らはgetで負荷が要求されていることを知っているので、すなわちブラウザは
キャッシュしました。私は多くのソリューションと多くのインターネットを検索しました。主にクライアントソリューションとサーバーソリューションに分かれています。
1。クライアントソリューション
IEアクセス戦略:インターネットオプション履歴レコードセッティング - インターネットの一時ファイルのオプション
1:Ajaxが要求したページの後にランダム関数を追加すると、ランダムタイム関数を使用できます
javascriptによって送信されたURLの後にt = math.random()を追加します
例:url+"&"+"+math.random();
2:xmlhttprequest.setRequestheader( "if-modify-since"、 "0")を追加
通常の状況では、ここのxmlhttprequestは直接使用されません
このコードを見つけることができるはずです
xxxxx.send(yyyyyy);
次に、に変えます
xxxxx.setRequestheader( "if-modify-since"、 "0");
xxxxx.send(yyyyyy);
実践により、両方の方法が非常に効果的であることが証明されています。
1.サーバーにヘッダー( "キャッシュコントロール:ノーキャッシュ、必須の再バリデート")を追加します
2。Xmlhttprequest.setRequestheader( "if-midified-since"、 "0");
3. xmlhttprequest.setRequestheader( "Cache-Control"、 "No-Cache");
4. "?fresh =" + math.random()ajaxのパラメーターを追加します。
5。4番目のメソッドは、urlパラメーターを追加した後、 " + new date()を追加します
6。ポストの交換を使用してください:推奨されません
2。サーバー - 側面ソリューション:
例としてstruts2を取る:
struts2サーバー - 側面
XMLコード
次のようにコードコードをコピーします。
<パッケージname = "json-nocache" extends = "json-default">
<wterceptors>
<Interceptor name = "CachingHeadersInterceptor" />
<インターセプタースタック名= "DefaultSecurityStack">
<interceptor-ref name = "defaultStack" />
<Interceptor-ref name = "CachingHeadersInterceptor" />
</internetor-stack>
</インターセプター>
<default-interceptor-ref name = "defaultsecuritystack" /> />
</package>
Javaコード
次のようにコードコードをコピーします。
Public Class CachingHeaderInterceptorはAbstractInterceporを拡張します{
private static final long serialversionuid = 1l;
パブリックストリングインターセプト
ActionContext Context = vitocation.getInvocontext();
httpservletResponse応答=(httpservletResponse)context.get(strutsstatics.http_response);
if(response!= null){
Response.setheader( "Cache-Control"、 "no-cache");
Response.setheader( "Pragma"、 "no-cache");
Response.setheader( "expires"、 "-1");
}
returnInvocation.Invoke();
}
}