問題タブ [if-modified-since]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
express - etagはexpressjsでどのように機能しますか
Expressjs は自動的に etag を送信します。etag がどのように生成されるかを知りたいのですが、get ルーチンによって動的に生成されるコンテンツに基づいているのでしょうか。または、コンテンツ(動的コンテンツ-DBから)を生成するプロセスを経ずに、同じようにetagを返すことによって、それを操作できる方法はありますか?
有効なセッションIDであるかどうかをチェックするだけで始まり、クライアントが提供するのと同じetagを返すミドルウェアであるか、URL +セッションIDに基づいている可能性があります。そのようにして一意になります。db呼び出し全体とそれらすべてのものを通過するのではなく、そこでリクエストを終了します。その場合、クライアントが 304 コールを発信していることを知る必要があります。
期限切れタグを使用できますが、セッションが終了したとき。誰かがその URL を開いた場合、それは許可されるべきではありません。そのため、etag もセッション ID に基づいている必要があると考えています。この動的コンテンツのシナリオでは、変更された場合はどのように機能しますか。使用できますか。
internet-explorer - 有効期限を尊重しないIE
IE (7 -10) は有効期限を尊重していないようです。私はフィドラーを開いてチェックしていました。応答に etag が含まれていた場合は 304 が返され、それ以外の場合は 1 年後に有効期限が切れるリソースに対して 200 が返されます。最終更新日も設定してみました。うまくいかないようです。クロムでは、期限切れタグがある場合..サーバーに送信されることさえありません(304の場合)、キャッシュされています。Fiddler ヘッダーの一部を次に示します。
そしてEタグ付き
Ruud からの提案によると..req/response は次のとおりです。
internet-explorer - Internet Explorer が「If-Modified-Since」ヘッダーを送信しない
HTTP "If-Modified-Since" ヘッダーを使用しようとしています。
- 私のサーバーは、すべての HTTP リクエストに「Last-Modified」ヘッダーで応答します。
- クライアントが同じリクエストを再度送信すると、それに応じて「If-Modified-Since」ヘッダーが更新されます。
これは Chrome と Firefox では正常に機能しますが、Internet-Explorer 11 では機能しません。
ここで述べたように、「Expires」ヘッダーを追加して「-1」に設定してみました。しかし、それもうまくいきませんでした。
これらは応答ヘッダーです。
助言がありますか?
TNX
html - Perl Mechanize : ページが変更された後に応答ページを取得しますか?
js とデータベースを使用してロードするページを取得しようとしています。読み込みには約 2 ~ 3 分かかります。「ページが読み込まれるまで 2 ~ 3 分お待ちください」と表示されるページを取得できます。ただし、ロード後にページを取得できません。
私はすでに次のことを試しました:
1.) Mechanize でミラー方式を使用する。ただし、応答の内容はデコードされません。したがって、ファイルは意味不明です。(また、応答コンテンツをデコードするミラー メソッドと同様のメソッドを記述しようとしましたが、これも機能しません。新しいコンテンツは読み込まれません。)
2.) リクエスト ヘッダー「if-modified-since」を追加しようとしました。しかし、それでも時間は同じで、新しいコンテンツは取得されません。
ポインタや提案は本当に役に立ちます。
ティア:)
rest - If-Modified-Since ヘッダーに基づいて REST API 表現を変更することは有効ですか?
API に「変更された値を取得」機能を実装したいと考えています。たとえば、次の REST API 呼び出しがあるとします。
これにより、学校 #7 のすべての生徒が取得されます。残念ながら、これは多いかもしれません。そのため、特定の時間以降に変更された学生の記録のみを返すように API を変更したいと考えています。(ユースケースは、夜間のプロセスが別のシステムから実行され、すべての学生を私のシステムから彼らのシステムにプルすることです。)
http://blog.mugunthkumar.com/articles/restful-api-server-doing-it-the-right-way-part-2/では、if-modified-since ヘッダーを使用して次のような表現を返すことを推奨しています。
- if-modified-since ヘッダーで要求された時間以降に更新されたすべての学生を検索します
- 生徒がいる場合は、200 OK でそれらの生徒を返します
- そのクエリから返された生徒がいない場合は、304 Not Modified を返します。
彼のやりたいことは理解できるが、これは間違ったやり方のようだ。If-Modified-Since ヘッダーの定義 ( http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.24 ) は次のように述べています。
If-Modified-Since リクエスト ヘッダー フィールドは、条件付きにするメソッドで使用されます。リクエストされたバリアントがこのフィールドで指定された時間以降に変更されていない場合、エンティティはサーバーから返されません。代わりに、メッセージ本文なしで 304 (変更されていない) 応答が返されます。
これは私には間違っているようです。RFC で示されているような表現や 304 を返すのではなく、いくつかのハイブリッドを返します。クライアント側のコード (またはさらに悪いことに、サーバーとクライアント間の Web キャッシュ) が意味を誤って解釈し、ローカルにキャッシュされた値を置き換えてしまう可能性があるようです。
だから、2つの質問:
- これはヘッダーの正しい使用法ですか?
- そうでない場合 (そして私はそうではないと思う)、ベストプラクティスは何ですか? クエリ文字列パラメータ?
c - プログラムが最後に実行された時間を確認する方法はありますか? (Unix では C)
ユーティリティが最後に実行された後に変更された現在のディレクトリ内のファイルを検索する (そして新しいディレクトリに移動する) ために、C でプログラム/ユーティリティを作成しています。
私が見つけようとしているのは、このユーティリティが最後に実行された時間を見つける方法があるかどうかです。あるいは、プログラムに時刻を保存する方法 (最後に保存された時刻と現在の時刻を比較し、「前回の時刻」変数を現在の時刻に更新するため)。
これを入力すると、時間をファイルに書き込んで (ユーティリティの実行時に単一のエントリを上書きする)、プログラム内のファイルから値を取得できることに気づきました。最善のアプローチ。
c - どのようにして tm 構造体から tm_mon をセグメンテーション違反を引き起こしますか? (ハ)
現在のディレクトリ内のファイルが Unix で一定時間後に変更されたかどうかを確認するプログラムを作成しています。私が使う:
後で私は持っています:
不条理な量の条件を許して、なぜ clock->tm_mon はセグ フォールトを引き起こさないのに、clock->tm_mon+1 はセグ フォールト クラッシュを引き起こすのですか? 上記のコードでは、ループ内の 1 つの印刷コマンドの後に seg fault が発生しました。整数 b を作成し、それを clock->tm_mon に等しく設定し、1 つ追加して、clock->tm_mon+1 の代わりに使用すると、セグ フォールトが発生しますが、後でいくつか出力されます。
iyr、imonth などは、最近の年、月などを適切に表す整数であり、月の +1 を説明するために何をしようとしても、ループ内でセグ フォールトが発生することを確認しました。また、ループの残りの if 条件を通過するものは何もなく、if 条件の後は何も起こらないことも確認しました。
ios - iOS: If Modified since ヘッダーをリクエストとともに送信
URLリクエストでIf Modified sinceヘッダーを送信する方法を知っている人はいますか?
RSS ページが更新されたかどうかを示すステータス コードを取得しようとしています。
更新#1:次のことを行うテストを行うことができました:
奇妙なことに、iOS アプリケーション全体を削除して実行すると、304 ステータス コードが返されます。しかし、If-Modified-Since 値を追加した行をコメントアウトして再実行すると、200 が返されますが、その行のコメントを外して再実行すると、304 エラーは発生しません。戻ってきてください... 200 エラー コードです。304 エラーを元に戻す唯一の方法は、iPhone デバイスからアプリケーション全体を削除することです。
何が起こっているのですか?