کسانی که افزونه minify رو میشناسند و استفاده می کنند این مطلب براشون مفید هست.افزونه minify برای فشرده سازی فایل های js و کدهای html به کار میره و تقریباً بین 20 تا 60 درصد حجم فایل های جاوااسکریپت رو کم می کنه در لود صفحه میتونه مؤثر باشه. [1]

من  این افزونه را در سایتی که هاستش در ایران هست نصب کردم. اما دیدم کار نمیکنه. [1]

کدهاش رو بررسی کردم و دیدم از سرویسی از گوگل استفاده می کنه که در این آدرس هست:

closure-compiler.appspot.com/compile

این سایت در ایران باز نمیشه! چون تحریم هستیم. چند راه به ذهنم اومد:

1- دانلود اسکریپت فشرده سازی js و نصب اون روی سرور که لازمه اش اجرای جاوا هست. [1]

2- فشرده سازی در سایتی که سرورش خارج از ایران هست و کپی فایل ها و دیتابیس مربوطه به سایت داخل ایران

3- ایجاد یک واسط بین سایت و گوگل که این واسط در سرور خارج از ایران باشه. [1]

راه سوم را با کلی آزمون و خطا طی کردم و نتیجه اش این شد:

یک زیر دامنه درست کردم در هاست خودم و یک فایل index.php در اون ایجاد کردم با محتوای زیر:

<?php
$js_code = urlencode(trim($_POST['js_code']));
$postdata = _minify_get_post_fields($js_code);
$a = _minify_send_request($postdata);
echo json_encode($a);
function _minify_send_request($post_data) {
  if (function_exists('curl_init')) {
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, "closure-compiler.appspot.com/compile");
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
    curl_setopt($curl, CURLOPT_POST, true);
    $response = json_decode(curl_exec($curl));
    //$httpcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
    curl_close($curl);
    return $response;
  }
}
function _minify_get_post_fields($js_code) {
  $post_data_array = array();
  $post_data_array[] = 'js_code=' . $js_code;
  $post_data_array[] = 'compilation_level=WHITESPACE_ONLY';
  $post_data_array[] = 'output_format=json';
  $post_data_array[] = 'warning_level=QUIET';
  $post_data_array[] = 'use_closure_library=' . true;
  $post_data_array[] = 'output_info=warnings';
  $post_data_array[] = 'output_info=errors';
  $post_data_array[] = 'output_info=compiled_code';
  $post_data_array[] = 'output_info=statistics';
  /* Prepare POST request query string */
  return implode('&', $post_data_array);
}
?>
 

بعد در فایل minify.admin.inc در افزونه minify آدرس curl رو به همون زیر دامنه ایجادی خودم تغییر دادم:

function _minify_send_request($post_data) {

  if (function_exists('curl_init')) {
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, "MY SUBDOMAIN ADDRESS");
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
    curl_setopt($curl, CURLOPT_POST, true);
    $response = json_decode(curl_exec($curl));
    $httpcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
    curl_close($curl);
    return array('response' => $response, 'http_code' => $httpcode);
  }
}

منظورم این خط هست:حدودا خط 287:

     curl_setopt($curl, CURLOPT_URL, "MY SUBDOMAIN ADDRESS");

آدرس زیر دامنه خودتون رو وارد کنید. [1]

با این کار افزونه minify به جای استفاده مستقیم از سرویس گوگل درخواست خود را به سرور خارجی شما ارسال میکنه و در سرور خارجی درخواست شما به سمت گوگل ارسال میشه و گوگل متوجه دیگه این درخواست را رد نمی کنه. [1]

  • 1 [2]
  • 2 [3]
  • 3 [4]
  • 4 [5]
  • 5 [6]
تعداد امتیازدهندگان: 9016
مسیر کوتاه: rangine.ir/node/1150