質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

665閲覧

ファイルを読み込んだ時にブラウザキャッシュで変更が反映されない問題を解決したい

ryoo_chksl

総合スコア69

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2019/05/15 06:27

編集2019/05/15 06:53

お聞きしたいこと

作りたいものとそれを実現させるために作ったコードを下に書きました。
一見これでも問題なさそうに見えたのですが、もし下のコードに何か問題があれば教えていただきたいです。また、よりよいコードに改善できるようであればそれも教えていただけたら幸いです。

##ファイルの構成
A.phpとB.phpとC.phpの3つのファイルがあります。各ファイルのDOCTYPE宣言からheadタグの一部(3つのファイルの共通部分)はhead.phpに記述しており、それを<?php include('head.php'); ?>で読み込んでいます。

何がしたいか

例えば、A.phpに入ったときに、以前に入ったときとはA.phpの内容が変更されていた時に、ブラウザキャッシュを無視してファイルを読み込んでほしいです。
##作ったコード
head.phpのDOCTYPE宣言の上には次のコードを記述しました。

php

1<?php 2 session_start(); 3 if (!isset($_SESSION['lastUpdated_old'])) {$_SESSION['lastUpdated_old'] = 1;} 4 $lastUpdated_new = date("Y/m/d H:i", getlastmod()); 5?>

head.phpのheadタグの中のscriptタグの中には次のコードを記述しました。

php

1<script> 2 <?php if($_SESSION['lastUpdated_old'] !== $lastUpdated_new) :?> 3 location.reload(true); 4 <?php $_SESSION['lastUpdated_old'] = $lastUpdated_new; ?> 5 <?php endif; ?> 6</script>

##補足
linkタグで読み込んだ外部CSSやJSを編集した場合は別の方法で対応する(例えば。linkタグのhref属性の最後にfilemtime()関数でクエリを加えるなど)ので、その点は問題ありません

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/05/15 06:33

何のファイルの編集確認ですか?
m.ts10806

2019/05/15 06:38

補足が私の追記依頼に応えてなさそうですけど、まさか「phpファイルが更新されていたら」ですか?
ryoo_chksl

2019/05/15 06:49

さきほど追記した「補足」は、mts10806さんの追記依頼に応えたものではありません。 「phpファイルが更新されていたら」の解釈で合っているはずです
guest

回答1

0

ベストアンサー

phpは画面にアクセスしたときにアクセス時点の最新のプログラムが実行されているのでわざわざ確認する意味はありません。

もしデータ出力などを行っていて「最新のデータをとってくるようにしたい」のであればボタン押してlocation.reload();だけ実行すれば良いかと。

それか、出力しているHTMLに影響があるようなもので「画面遷移を伴いたくない」のであればAjaxでデータだけ取得して該当部分のHTMLをJavaScriptで書き換えるとか。

投稿2019/05/15 06:53

m.ts10806

総合スコア80852

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryoo_chksl

2019/05/15 06:58

てっきりphpファイルもブラウザキャッシュとして保存されていて、中身を変更してもキャッシュのせいで変更が反映されない場合があるのかと思っていましたが、そうではないんですね。 ということは、外部CSS/JSが変更されたときにはキャッシュを無視して読み込みをするようにしたら、「キャッシュのせいで変更が反映されない」問題はなくなるのでしょうか?
m.ts10806

2019/05/15 07:03

PHPはサーバーサイドの言語です。 アクセスしたときにサーバー上でプログラムが動作します。なので、必ずサーバー上の現在のプログラムが動作します。「キャッシュが全くない」というとウソになりますが(特にフレームワークなど) 質問者さんのコードでキャッシュで悩むことはないでしょう。実際に色々変更してみるといいのでは。 > 外部CSS/JSが変更されたときにはキャッシュを無視して読み込みをするようにしたら 補足のところですよね。下記のようにするということですよね。 <link rel="stylesheet" type="text/css" href="hoge.css?20190515"/> そのために入れたのでは? PHPの件もそうですが、もう少し色々と検証されたほうが良いです。 ここで色々説明しても理解につながることって少なく、経験は積まれませんので。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問