کسانی که افزونه 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]