Жылдам веб-қарау: бұл не және не үшін
Жылдам веб-қарау — файл ішіндегі нысандардың ерекше жайылымы, оны линеаризация деп атайды. Кәдімгі PDF-те қиылысқан сілтемелер кестесі соңында жатады, сондықтан қараушыға бірінші бетті көрсету үшін де құжаттың бәрі керек. Линеаризацияланғанда бірінші бетке керектің бәрі басына шығарылады, ал нұсқау кестелері қалғандарының файлдың қай жерінде жатқанын айтады. Оқырман бетті файл әлі жүктеліп жатқанда көреді.
Сандар туралы қысқаша
- Белгі қайда жатады
- /Linearized сөздігі — файлдың бірінші нысаны, алғашқы 1024 байт ішінде
- Біз қалай тексереміз
- алғашқы 2048 байттан /Linearized іздейміз, құжатты екінші рет талдамай
- qpdf не істейді
- --linearize: нұсқау кестелерімен екі өтулі қайта жазу
- Салмаққа әсері
- сықпайды: көлем аз өзгереді, кейде өседі
- Не қайтады
- бастапқы және соңғы көлем, файл линеаризацияланған ба, жол-жөнекей жөнделді ме
- Шектер
- файлға 50 МБ, 10 минутта 20 сұраныс, таймаут 60 секунд
Ішкі құрылысы қандай
Линеаризацияланған құжаттың ресми белгісі бар: линеаризация параметрлерінің сөздігі файлдың бірінші нысаны болуға және алғашқы 1024 байтқа түгел сыюға міндетті. Стандартта солай ойластырылған: қараушы құжатты бөліктеп көрсетуге бола ма деген шешімді соңындағы кестені іздемей, файлдың басынан қабылдайды.
Одан кейін бірінші беттің нысандары, олардан соң нұсқау кестелері тұрады — әр келесі бетті байт ауқымымен байланыстыратын карта. Оны алған қараушы бәрін тізбектеп жүктеудің орнына 47-беттің дәл сол үзіндісін сұрай алады.
Біз белгіні арзан жолмен тексереміз: файлдың алғашқы 2048 байтынан /Linearized жолын іздейміз. Бір емес, екі килобайт болатыны — пішім тексеруі %PDF- қолтаңбасының алдында бір килобайтқа дейін қоқысқа жол береді: пошта кіріспелері, кодтау белгілері, прокси кірістірмелері. Мұндай қоқыс сөздікті жылжытады, бірақ линеаризацияны жоймайды.
Біздің құрал не істейді
- PDF жүктеңіз: шек 50 МБ, өңдеу Алматыдағы серверімізде жүреді, файл жауаптан кейін жойылады.
- Біз алғашқы екі килобайтты оқып, құжаттың бізге дейін линеаризацияланғанын есте сақтаймыз.
- qpdf --linearize файлды екі өтуде қайта жазады: алдымен нысандар жайылымы, сосын нұсқау кестелері.
- Жол-жөнекей qpdf құрылымды жөндеуге мәжбүр болса, ол 3 кодымен аяқталады — бұл ескертумен сәттілік, біз ол туралы бөлек хабарлаймыз.
- Жауапта бастапқы және соңғы көлем, «линеаризацияланған еді» және «жол-жөнекей жөнделді» белгілері келеді.
Бұл қажет емес жағдайлар
- Файл тек жүктеп алуға таратылады: құжат браузерде көрсетілмесе, нысандар реті ештеңе өзгертпейді.
- Сервер байт ауқымы бойынша беруді қолдамайды: онсыз қараушы файлды бәрібір түгел жүктейді.
- Құжат онсыз да кішкентай: бірнеше жүз килобайтта «бірден» мен «бірден» арасында айырма жоқ.
- Файлда криптографиялық қолтаңба тұр: қайта жазу байттарды өзгертіп, ондай қолтаңбаны бұзады. Біздің қолтаңба — беттегі сурет, оны линеаризация қозғамайды.
- Салмақты азайту керек: бұл басқа міндет, линеаризация сықпайды.
Жиі қойылатын сұрақтар
Файлымның линеаризацияланғанын қалай білуге болады?
Оны оңтайландыруға жүктеңіз: біз мұны жауаптағы бөлек белгімен хабарлаймыз. Тексеру арзан — құжаттың бәрі емес, алғашқы екі килобайты оқылады.
Пошта үшін файлды линеаризациялаудың мәні бар ма?
Жоқ. Тіркемені алушы ашудан бұрын түгел жүктеп алады, сондықтан файл ішіндегі нысандар реті көрсету жылдамдығына ешқандай әсер етпейді.
Оңтайландырудан кейін файл неге сәл үлкейді?
Линеаризация жылдам бастау үшін нұсқау кестелерін қосып, қызметтік деректің бір бөлігін қайталайды. Бұл қалыпты баға: көлем емес, бірінші бетке дейінгі уақыт ұтылады.
Құрал файл жол-жөнекей жөнделді деп жазды. Бұл не?
qpdf құрылым бұзушылығын тауып, құжатты жол-жөнекей қайта жинады да, 3 кодымен аяқталды. Файл жарамды, бірақ беттерін тексерген жөн: ол сұрағаныңыздан көбірек өзгерткен.