작성자는 VS2017MVC와 함께 제공되는 bootstrap.js v3.0.0 버전을 사용하고 있는데, Baidu에서 검색해 보니 모달 로딩 페이지에 심각한 캐싱 문제가 있는 것을 발견했습니다. 기본적으로 둘 다 다음과 같습니다.
Bootstrap에 대해 더 자세히 알고 싶다면 다음을 클릭하세요. Bootstrap 프레임워크
1. 닫을 때 데이터 지우기:
$("#myModal").on("hidden.bs.modal", function () { $(this).removeData("bs.modal"); });
2. 요청한 URL에 타임스탬프를 추가합니다.
function remoteUrl(u){ u += '&t=' + Math.random(1000) $.get(u, '', function(data){ $('#remoteModal .modal-body').html(data) }) $('#remoteModal').modal({show:true,backdrop:false}) }
위의 두 가지 해결 방법은 실제로 효과적이지만 IE에서는 첫 번째 방법이 유효하지 않고 두 번째 방법이 해결하기에는 너무 번거롭습니다.
Baidu에서 특히 IE를 위한 또 다른 솔루션을 찾았습니다.
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]//不加的话,IE缓存会捣乱
이 방법은 서버 측에 각 작업을 추가하는 것입니다. 이 경우 작성자는 실제로 몇 개의 작업을 추가해야 합니까? 쓰레기라면 인터넷 세상을 그만두세요.
좋아, 토해냈어. 해결책은 다음과 같다. bootstrap.js
파일
을 대략 1068번째 줄에서 아래와 같이 직접 수정한다:
$(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { var $this = $(this) var href = $this.attr('href') var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7 var remoteUrl = !/#/.test(href) && href if (remoteUrl == undefined) { remoteUrl = ""; } if (remoteUrl.indexOf("?") > -1) { remoteUrl += "&" + (new Date()).valueOf() } else { remoteUrl += "?" + (new Date()).valueOf() } //var option = $target.data('modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) //上边的是原代码,增加了remoteUrl来解决IE下缓存的问题 var option = $target.data('modal') ? 'toggle' : $.extend({ remote: remoteUrl }, $target.data(), $this.data()) e.preventDefault() $target .modal(option, this) .one('hide', function () { $this.is(':visible') && $this.focus() }) })
댓글에 해결책이 설명되어 있고, 방금 원격 URL을 추가했고, 그 이후의 시간을 추가했다. 요청된 URL을 하나씩 수정하지 않고 각 브라우저를 고려할 수 있도록 합니다.
위 내용은 부트스트랩 캐싱 문제를 처리하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!