2017-10-27 1 views
0

라이브 웹 사이트에서 일부 변경했습니다 (모범 사례는 아니지만 들었습니다). 캐싱에 문제가 있습니다. CSS (실제로 SASS)를 변경할 때마다 CTRL F5를 눌러 변경 사항을 확인해야합니다. 그것은 나에게는 문제가 아니지만 사용자가 깨진 웹 사이트에 대해 불평하기 시작했으며 많은 사람들이 캐시를 지우거나 CTRL F5를 사용하는 방법을 알지 못합니다.웹 사이트 변경 사항이 캐싱되고 있으며 클라이언트에 대해 업데이트되지 않습니다.

다음 코드를 추가하려고했지만 작동하지 않습니다.

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" /> 
    <meta http-equiv="Pragma" content="no-cache" /> 
    <meta http-equiv="Expires" content="0" /> 

나는이 스크립트를 추가하는 시도 :

 <script type="text/javascript"> 
     $(document).ready(function(){ 
      $('img').each(function(){ 
       var date = new Date; 
       // add the current unix timestamp in microseconds to the the image src as a query string 
       this.src = this.src + '?' + date.getTime(); 
      }); 
     }); 
    </script> 

그래도 난 자바 스크립트를 모르겠어요, 그래서 그것을 제대로 사용하는 방법을 모르겠어요. 나는 대답을 검색했고 다른 사람들은 이러한 것들이 그들에게 도움이된다고 말했지만 단순히 나를 위해 일하지 않고있다. 저는 디자이너이자 프론트 엔드 개발자입니다. 그래서 PHP와 Javascript는 저를 넘어서 있습니다.

마지막으로, 버전 태그 -? v = x.x를 사용하는 방법에 대해서도 읽었지만 문제점은 다른 개발자가 코딩했기 때문에 SASS를 사용하여 스타일 시트에 연결하는 방법을 알지 못합니다.

도움을 주시면 감사하겠습니다.

감사합니다.

답변

2

임의 코드를 PHP에 GET 변수로 추가하여 외부 CSS 파일을 호출하십시오. 이 같은 뭔가 :

<script src="yourfileUpdated.css?<?php echo rand() ?> rel="stylesheet" type="text/css" /> 
+0

참고 :이 방법을 사용하면 변경 내용이 실제로 적용되었는지 여부에 관계없이 파일이 캐시되지 않습니다. – Tenbo

+1

맞습니다. 나는이 문제를 해결하기 위해 가장 간단한 방법을 생각해 보았습니다. 오프너가 질문에 쓴 것을 고려해보십시오. 그가 캐시에있는 파일을 단순히 원하지 않는다고 보았습니다 ... – holden

2

가 이상적으로 당신과 하지에, 파일의 filemtime() (이 마지막으로 수정 된 시간을) 확인하기 위해 PHP를 사용하고, 그것이 변경된 파일입니다 나타 내기 위해 versioning라는 기술을 사용하십시오 캐시에서로드하십시오.


결과 HTML이 비슷한 보일 것입니다 :

<link href="/your/css/file.css?ver=<?php echo filemtime('/your/css/file.css'); ?>" rel="stylesheet" type="text/css"/> 
+0

답변을 모두 주셔서 감사합니다! 나는이 일을 시도하고 싶지만, 불행히도 (그리고 그것은 완전히 어리석은 소리가 난다.) 나는 CSS에서 링크하고있는 곳을 찾을 수 없다. 나는 헤더 파일을보고 있으며 그들이 연결 한 유일한 스타일 시트는 글꼴이 굉장한 것입니다. 그들은 그것을하기 위해 스크립트를 사용할 수 있습니까? – Wynteraeon

0

스타일 wp_enqueue_style 기능이 추가됩니다. 테마를 검색하면 아마도 functions.php에있을 것입니다.

다음과 같이 사용합니다

wp_enqueue_style('main-styles', get_template_directory_uri() . '/css/style.css', array(), filemtime(get_template_directory() . '/css/style.css'), false); 

자세한 내용은 여기를 https://wordimpress.com/wordpress-css-and-js-cache-busting/을 읽어보십시오.

+0

그 조언을 해주셔서 감사합니다! 그렇게 스타일 시트를 추가 할 수 있는지 몰랐지만 여전히 찾을 수 없습니다. 그들은 기능을 통해 그것을 추가하지 않았다. 찾을 수있는 유일한 wp_enqueue_style은 글꼴 - 멋진 아이콘입니다. .htaccess를 사용하여 내 사이트가 캐싱되지 않도록 할 수 있습니까? – Wynteraeon

+0

예, .htaccess를 사용하여 수행 할 수 있습니다. 여기 https : // stackoverflow를보십시오.co.kr/questions/11532636/how-to-prevent-http-file-caching-in-apache-httpd-mamp. 그것은 이상적인 해결책은 아니지만 어쨌든 시도해 볼 수 있습니다. 가장 좋은 방법은 CSS가 링크 된 /로드 된 방법을 찾고 캐싱을 방지하기 위해 Tenbo의 방법 또는 광산을 사용하는 것입니다. –

+0

정말 고마워요! – Wynteraeon

관련 문제