浏览器从缓存中获取JSON文件

时间:2016-06-25 05:26:10

标签: javascript php jquery html

我正在使用json文件加载实时地图,但是当我登录页面时,它会从服务器n加载json文件,显示实时地图位置。但有时它没有加载json文件,它从catche文件n获取数据因为catche文件我无法显示实时位置。请帮我做点什么

提前致谢

这是代码

<script>
$(document).ready(function() {     

  window.setInterval(function(){

  $.getJSON('json/<?php echo $vehicle_imei_no2;?>.json').done(function(json){  

     var lat_lng = new Array();
     var path = new google.maps.MVCArray();
     var poly = new google.maps.Polyline({ map: map, strokeColor: '#0000ff' });
     service = new google.maps.DirectionsService();
     directionsDisplay = new google.maps.DirectionsRenderer();

       $.each(json, function(key, data) {
          latLng = new google.maps.LatLng(data.lat, data.lng); 
            if(data.date == '<?php echo $currentDate;?>'){
              if(data.time >= '<?php echo $sessionTime; ?>'){
                  lat_lng.push(latLng);
                    }
                 }

        addMarker(latLng, map); //add new marker
             }); //each


             for (var i = 1; i < lat_lng.length; i++) {

                    var src = lat_lng[i];
                   var des = lat_lng[i + 1];
                   path.push(src);
                   poly.setPath(path);
                   service.route({
                       origin: src,
                       destination: des,
                       travelMode: google.maps.DirectionsTravelMode.DRIVING
                   }, function (result, status) {
                       if (status == google.maps.DirectionsStatus.OK) {
                            directionsDisplay.setDirections(result);
                       }
                   });

                }



            });    //getjson

   }, 1000);//interval 
    });

 function addMarker(location,map) {
     marker.setPosition(location);
     marker.setIcon('assets/img/moving_bike.png');
     }

</script>

4 个答案:

答案 0 :(得分:0)

在获取文件时,无论使用何种方法,都要使用旧技巧。将更改的查询字符串添加到文件名中,例如:

?t=CURRENT_TIMESTAMP

生成CURRENT_TIMESTAMP时间戳。 对于浏览器,它将始终是一个新文件,但不是服务器。所以浏览器不会在这里使用缓存。

答案 1 :(得分:0)

请提供更多信息,例如请求JSON的位置,用于请求JSON的代码等等。

无论如何,获取资源的一个巧妙方法是使用javascript或甚至从服务器端呈现过程向请求附加随机query ..

http://example.com/data/map.json?123

与:

不同
http://example.com/data/map.json?098

并且应该发出新请求,因为该数据从未被缓存。

使用jQuery的一个例子(在评论中说明):

$.getJSON('/data/map.json?' + (new Date().getTime()), ...)

使用Date也可以确保您永远不会请求相同的随机号码。

我建议您尝试在服务器端修复问题..

答案 2 :(得分:0)

您可以使用此

全局禁用缓存
$(document).ready(function() {
  $.ajaxSetup({ cache: false });
});

或使用$.ajax({})加载json文件并将cache设置为false

答案 3 :(得分:0)

我同时使用两种组合

$(document).ready(function() {
  $.ajaxSetup({ cache: false });

$.getJSON('json/<?php echo $vehicle_imei_no1;?>.json?' + (new Date().getTime())).done(function(json){ });

});

这对我有用