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

I am loading live map using json file but when i login the page some time it loads the json file from server n show the live map location. But sometime it not load the json file it takes the data from catche file n because of catche file i unable to show the live location. Please help me what to do

Thanks in advance

This is the code

<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>
dscs63759
dscs63759 是的,我使用$.getJSON()
大约 4 年之前 回复
doukongyong44772
doukongyong44772 禁用服务器配置文件中JSON文件的服务器缓存头。但是您正在使用PHP,如果内容是动态生成的,为什么不在应用程序中提供JSON?
大约 4 年之前 回复
doufuhao8085
doufuhao8085 你究竟用什么来获取json文件。是$.getJSON()
大约 4 年之前 回复

4个回答



您可以使用此</ p>

  $(document).ready(全局)禁用缓存。  function(){
$ .ajaxSetup({cache:false});
});
</ code> </ pre>

或使用 $ .ajax({} )</ code>加载json文件并将 cache </ code>设置为 false </ code> </ p>
</ div>

展开原文

原文

You can globally disable cache using this

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

or use $.ajax({}) to load the json file and set cache to false



在提取文件时,无论使用何种方法,都要使用旧技巧。 添加到文件名的是更改的查询字符串,例如:</ p>

 ?t = CURRENT_TIMESTAMP 
</ code> </ pre>

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

展开原文

原文

While fetching the file regardless of what kind of method you are using use an old trick. Add to the file name a changing query string for example:

?t=CURRENT_TIMESTAMP

Where CURRENT_TIMESTAMP is generated timestamp. For the browser it will be always a new file, but not for the server. So the browser won't use caching here.



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

无论如何,获取资源的一个巧妙方法是使用javascript或甚至从服务器端渲染过程将随机查询</ code>附加到请求中。</ p>

  http://example.com/data/map.json?123
</ code> </ pre>

与以下内容不同: </ p>

  http://example.com/data/map.json?098
</ code> </ pre>

并且应该制作一个 新请求,因为该数据从未</ em>被缓存。</ p>

使用jQuery的示例(在注释中说明):</ p>

 <  code> $。getJSON('/ data / map.json?'+(new Date()。getTime()),...)
</ code> </ pre>

使用 Date </ code>还将确保您永远不会请求相同的随机</ em>号码。</ p>

我建议您尝试在服务器上修复此问题 事情的一面...... </ p>
</ div>

展开原文

原文

Please provide more information to your question, such as where the JSON is being requested from, the code used to request the JSON and similar..

Anyway, a neat trick with fetching resources is to append a random query to the request with javascript or even from a server side rendering process..

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

is not the same as:

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

and should make a new request since that data has never been cached.

An example using jQuery (stated in comments):

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

using the Date will also ensure you never request the same random number.

I'd suggest you try to fix the issue on the server side of things..

douzhang1364
douzhang1364 现在我添加我的代码请检查它
大约 4 年之前 回复
dqh1992
dqh1992 好吧,我不确定,服务器可能有一个问题处理请求与查询字符串。 没有更多的代码,我无法帮助。
大约 4 年之前 回复
douchang8219
douchang8219 我应用它但在应用日期函数后,它不加载json文件而不是从服务器n而不是从缓存加载
大约 4 年之前 回复
doubeijian2257
doubeijian2257 所以我的例子说明,尝试追加Date $ .getJSON('json / <?php echo $ vehicle_imei_no1;?>。json?'+(new Date(。getTime()))。done(function(json){ })
大约 4 年之前 回复
dongliang_bj2016
dongliang_bj2016 我正在使用这个函数$ .getJSON('json / <?php echo $ vehicle_imei_no1;?>。json).done(function(json){});
大约 4 年之前 回复

i use both combination

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

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

});

and this works for me

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问