mod_deflate in Apache ანუ js და css ფაილების ავტომატური კომპრესაცია
ამ პოსტში მინდა შევეხო js და css ფაილების კომპრესაციას Apache -ს მოდულის mod_deflate საშუალებით. ჩემ მეგობარ ბმულზე არსებულ ბლოგზე სოსოს ერთერთ ძველ პოსტში აქვს დაახლოებით ასეთი პოსტი, თუმცა მე მინდა ისევ მივუბრუნდე ამ თემას და კონკრეტული შედეგები განვიხილოთ.
თავიდანვე ვიტყვი რომ Client Side დეველოპმენტის დროს ეს საშუალება ერთერთი მისწრებაა. ბოლო პროეტქის გამო ყურადღების გამახვილება მომიწია გვერდის სწრაფ ჩატვირთვაზე, ვინაიდან კლიენტი რომელიც ვებ აპლიკაციაზე შემოდის იყენებს ფაქტიურად ”მკვდარ” ინტერნეტს, ვგულისხობ GPRS ტექნოლოგიას, რომელიც ყველაზე კარგ შემთხვევაში ქალაქებში და ანძებთან მუშობს შედარებით ნორმალურად. ნუ GPRS ტექნოლოგია სხვა თემაა და მე მინდოდა მე თქვა რომ ჩვენს შემთხვევაში გვაქვს ძალიან, ძალიან დაბალი სიჩქარის ინტერნეტი და რაც შეიძლება ვებ აპლიკაცია უნდა იყოს მსუბუქი რათა დროში ძალიან არ გაიწელოს მისი ჩამოტვირთვა. ამ დროს არის რამოდენიმე საშუალება, js ფაილის 1 ფაილში გაერთიანება, მინიფიცირება, მინიფიცირებული ფაილის ზომაში კიდევ უფრო მეტად შემცირება base62 კოდირებით და ა.შ.
ეხლა დავუბრუნდეთ კონკრეტულ თემას და განვიხილოთ mod_deflate მოდული Apache-ში.
მოკლე აღწერაში ვკითხულობთ ასე
The mod_deflate module provides the DEFLATE output filter that allows output from your server to be compressed before being sent to the client over the network.
წყარო http://httpd.apache.org/docs/2.0/mod/mod_deflate.html
მისი გამართვაც შეგვიძლია ისეთ მცირე ვებ სერვერზეც როგორიცაა თუნდაც Denwer-ი.
httpd.conf ფაილში უნდა ვიპოვოთ [code]LoadModule deflate_module modules/mod_deflate.so[/code]
და მოვხსნათ მას კომენტარი, ან თუ ვერ ვიპოვით გავუწეროთ იგივე სტრიქონი.
შესაბამისად modules დირექტორიაში უნდა მოგვეპოვებოდეს mod_deflate.so ფაილი, და თუ მაინც არ გვაქვს შეგვიძლია იგი გადმოვწეროთ სხვა სერვერის modules დირექტორიიდან სადაც იგივე ვერსია Apache-ს იყენებთ.
ამის შემდეგ ვარესტარტებთ Apache-ს.
შემდეგ ჩვენი ვებ აპლიკაციის root დირექტორიაში ვაკეთებთ .htaccess ფაილს და შიგნით ვწერთ
js ფაილისთვის –
1 2 3 | <files *.js> SetOutputFilter DEFLATE </files> |
js და css ფაილისთვის –
1 2 3 | <filesmatch "\.(css|js)$"> SetOutputFilter DEFLATE </filesmatch> |
ესეც ასე – ეხლა შედეგებისთვის დავდებ გრაფიკულ სურათს.
აქ size სვეტში ნათლად ჩანს შემცირებული ზომები, ფრჩხილებში მოცემულია ფაილის რეალური ზომა სერვერზე და მის გარეთ ზომა კომპრესიის შემდეგ 🙂
აქ შეგვიძლია გავითვალისწინოთ რომ jqury-1.3.2.min.js ფაილი უკვე კომპრესირებული იდო სერვერზე და ამ ხერხმა მასზეც მოახერხა წონის შემცირება.
წარმატებულ კომპრესიას გისურვებთ.
March 24th, 2009 at 3:21 am
ოპტიმიზაციის ეს მეთოდი სასურველია გამოვიყენოთ PHP, HTML და სხვა ფაილებზეც, მითუმეტეს მაშინ როდესაც გვერდის ზომა საკმაოდ დიდია:
SetOutputFilter DEFLATE
March 24th, 2009 at 2:07 pm
@თეიმურაზი
ალბათ გინდოდა გეგულისხმა HTML სტრუქტურის ფაილები, რადგან php ფაილი არცერთმა ბროუზერმა არ იცის, მან უბრალოდ იცის php გაფართოების HTML სტრუქტურის ფაილი (და არა მარტო php). ხოლო რაც შეეხება HTML_ის ოპტიმიზაციას მაგას იმედია ცალკე პოსტს მივუძღვნი, რადგან როგორც მაგალითად CSS-ში ოპტიმიზაციის ერთერთი საშუალებაა უნივერსალური სელექტორების გამოყენება, რომელი თავის მხრივ ერთგვარად html-ის ზომასაც ამცირებს, ასევე html-ის დოკუმენტის აწყობისას არის საკმაოდ ბევრი ნიუანსი.
April 8th, 2009 at 6:55 pm
გამარჯობა ალეკო,
ძალინა მჭირდება თქვენი დახმარება, რადგან ჯავაში მოვიკოჭლებ.
ეს კიბორდი ჩემთან არ მუშაობს ქართულად, ანუ ინტერნეტ ექსპლორერში არ იწერება ქარტულად….მაგრამ. ფაირფოქსში პრობლემა არ აკვს, ყველაფერი რიგზეა….ხომ არცი რისი ბრალია?
გთხოვ დამიწერო,
დიდი მადლობა
April 9th, 2009 at 12:25 am
@გიო
გაგიმარჯოს
არ ვიცი რა შუაშია შენი შეკითხვა ამ თემასთან მარა განვიხილოთ 🙂
ჯერ ერთი ალბათ ჯავასკრიპტი და არა ჯავა 🙂
მერეც – რომელი კეიბორდი? 🙂 GeoKBD?
თუ GeoKBD მაშინ დაწერე ინტერნეტ ექსფლორერის ვერსია,
მაგალითი თუ როგორ აშენებ შენს გვერდზე მაგ კოდს და
კონკრეტულ ერორს თუ ამბობს რამეს?
April 9th, 2009 at 5:34 pm
გამარჯობა ალეკო,
ვიცი რომ ჩემი კითხვა ამ პოსტთან არაფერ შუაშია, მაგრამ ძალიან მინდა დახმარება და ამიტომ დავწერე, რისთვისაც დიდ მადლობას მოგახსენებ…
პრობლემა რაშია და, ინტერნეტ 6 და 7, სადაც უნდა გამოჩნდეს “ქართული კლავიატურის” ჩეკბოქსი,(როგორც აქ შენთან ჩანს) არ ჩანს….ფაირფოქსში 3 კი პრობლემა არ აქვს.
მემგონია რაღაც even.load პრობლემაა რაც ვერ გავიგე??
კიდევ ერთხელ დიდი მადლობა…
April 9th, 2009 at 5:53 pm
მოდიში კიდევ ერთი რამე,
იგივე პრობლემა აქვს Search field ფორმაში ქართულად არ იწერება ინტერნეტ 6 და 7, როგორც ავღნიშნე ფაირფოქსში კი ქართულად მშვენივრად ძებნის…
ეხლა ამას ინტერნეტ 6 ში ვწერ და მშვენივრად მუშაობს
🙁
April 12th, 2009 at 12:20 pm
@გიო
შეგიძლია მისამართი დადო სადაც ეგ პრობლემა გაქვს? ზეპირად პრობლემის განხილვას ჯობია ფიზიკურად შევხედოთ, დადე და ვნახავ 🙂
April 12th, 2009 at 9:24 pm
ვა ალექს აღარ ხუმრობ აი :*
იგივე თემაზე თითქმის ორი წლის წინანდელი პოსტი:
http://www.code.ge/apache/mod_deflate-js-css-file-compression
და იგივე თემის დამატება ოღონდ ამჯერად mod_deflate – ს გარეშე:
http://www.code.ge/javascript/ant-rhino-yuicompressor-js-packer
April 12th, 2009 at 9:29 pm
@იოსები
როგორ ფიქრობ ეგ არ მექნებოდა წაკითხული? 😀 არაერთხელ და განმეორებით პოსტის დაწერა პირადმა შედეგებმა გამიჩინა და კიდევ ერთხელ დავადასტურე შენი პოსტის სარგებლიანობა
April 12th, 2009 at 9:31 pm
@ალექს
ვიცი წაკითხული რომ გაქვს, ბლოგის შესავალში გიწერია მაგის შესახებ 😀
შენი ბლოგის მკითხველებისათვის დავამატე ეგ ლინკები ამ თემით დაინტერესებულ ადამიანს გამოადგება 🙂