如何将这个PHP转换成java来停止缓存?

时间:2016-06-20 02:07:13

标签: javascript php caching

我正在使用fastcgi-cache整页缓存并使用php进行geoip_country_code,我只是使用了一个vpn并连接到另一个国家,我意识到该页面正在被缓存。

我遵循了这个:https://www.howtoforge.com/using-geoip-with-nginx-on-ubuntu-12.04但它只是php示例,我找不到任何javascript示例。我正在调用fastcgi_params中的变量,这只能通过php访问吗?

我的问题是:如何阻止此代码缓存,我认为javascript不会缓存它然后呢?

<?php 
    $geoip_country_code = getenv(GEOIP_COUNTRY_CODE);
    $geoip_country_name = getenv(GEOIP_COUNTRY_NAME);
    switch ($geoip_country_code) {
      case "US":
        echo "USA";
        break;
      case "UK":
      case "IE":
      case "AU":
        echo "AU";
        break;
      default:
        echo "default";
    }

    ?>

如果是这样如何将这个PHP作为javascript?

到目前为止,我已经尝试过:

<?php 
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache"); // HTTP/1.0
    header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
    $geoip_country_code = getenv(GEOIP_COUNTRY_CODE);
    $geoip_country_name = getenv(GEOIP_COUNTRY_NAME);
    //etc..

它仍然缓存php代码,这就是为什么我要问如何在javascript中执行此操作?

到目前为止,我得到了:

<script type="text/javascript">
        document.write("Entering switch block<br />");
        var $geoip_country_code = getenv(GEOIP_COUNTRY_CODE);
        var $geoip_country_name = getenv(GEOIP_COUNTRY_NAME);
        switch ($geoip_country_code) {
          case "US":
            text = "USA";
            break;
          case "UK":
          case "IE": 
          case 'AU': document.write("Good job<br />");
            break;
          default:
            document.write("Good job<br />");
        }
    </script>

但它没有用,我的javascript是有限的,我做错了什么?

2 个答案:

答案 0 :(得分:0)

没有必要使用JavaScript。在PHP中使用缓存控制(通过向标头添加标签以防止缓存):

How to prevent Browser cache for php site

答案 1 :(得分:0)

事实证明,fastcgi缓存并没有为每个人缓存同一页面。

因此,此PHP代码的缓存不相同。

我认为确实如此。我运行了这个PHP GeoIp代码,显示用户的国家名称,我刷新了缓存并加载了页面,它说澳大利亚,我的朋友在白俄罗斯加载了页面,在fastcgi缓存页面后它说白俄罗斯而不是澳大利亚。

因此fastcgi缓存必须是每个用户而不是为所有人缓存同一页面。