Tìm hiểu một số thẻ meta ( Hải Âu)

Meta tag là thẻ dùng để cung cấp các thông tin về website một cách tóm gọn đối với các trình duyệt lẫn người dùng hay bot từ các search engine. Hiện nay, có không ít người đang hiểu sai ý nghĩa của nó và ứng dụng đôi khi không hợp lý trong nhiều website. Dưới đây là một số thẻ thường dùng

    - Meta Description:

        Thẻ này dùng để mô tả nội dung của một trang web. Nội dung của thẻ này nên được viết ngắn gọn và xúc tích khoảng từ 20 đến 25 từ hoặc ít hơn. Đây là thẻ được hầu hết các SE sử dụng để hiển thị nội dung kết quả tìm kiếm.

        Ví dụ: HTML

             <META NAME=”description” CONTENT=”Website Khoa học kỹ thuật, giải trí và đời sống dành cho cộng đồng người Việt cùng chia sẽ kinh nghiệm và trao đổi học hỏi.”>

        Thẻ này được khuyến khích sử dụng và nên viết một cách xúc tích nhất nhằm thu hút người dùng bấm vào website của bạn từ kết quả tìm kiếm. Thông thường nếu không dùng thẻ này thì các SE như google cũng sẽ tự động tạo khi index nội dung website. Tuy nhiên bạn nên dùng bởi vì đôi khi các mô tả được index tự động sẽ không được như ý của bạn.

   - Meta Abstract:

        Cung cấp nội dung tóm tắt cho phần mô tả của website. Thẻ này chỉ được dùng để mô tả ngắn gọn hơn để bot có thể xác định được chính xác hơn nội dung website của bạn. Nội dung của thẻ này thường khoảng 10 từ trở lại.

         Ví dụ: HTML

              <META NAME=”Abstract” CONTENT="Noi dung mo ta website.">

    - Meta Keywords:

        Thẻ từ khóa được dùng để định dạng nội dung trang web. Từ khóa được sử dụng bởi các SE để index site của bạn có thêm thông tin từ các nội dung của title, body, và các thành phần khác. Từ này thường được dùng để cung cấp các từ khóa liên quan đồng nghĩa hoặc tương tự với các từ khóa của title.

           Ví dụ: Title của trang web cho bài viết này là “Tìm hiểu một số thẻ meta”. Bạn có thể ứng dụng keywords như sau:

             HTML

           <META NAME=”keywords” CONTENT=”khái niệm, quảng bá website, quảng bá web, tag, forum, technical, science, keyword, abstract”>

       Bạn nên sử dụng keywords một cách thận trong và bảo đảm sự tương thích với nội dung. Website của bạn có thể bị phạt hoặc đưa vào blacklist nếu bạn quá lạm dụng nó. Việc sử dụng keywords cũng có thể là một con dao hai lưỡi đối với bạn. Bạn có thể mất vài giờ để nghiên cứu cách viết keywords tốt nhất và đối thủ của bạn chỉ mất vài phút để thừa hưởng từ bạn.

      Trong bài viết tuy rất cần lối viết tự nhiên nhưng làm gì thì cũng cần có quy tắc. vậy nên muốn bài viết lên top, muốn thẻ meta description chuẩn seo thì cần phải tuân thủ một vài quy tắc sau:

  1. Miêu tả nội dung chân thực của bài viết
  2. Viết không quá 140 ký tự (lưu ý là ký tự chứ không phải chữ )
  3. Viết càng câu dẫn, càng lôi kéo càng tốt, có thể nói quá nhưng không được nói sai.
  4. Lưu ý rằng mỗi thẻ meta của một bài viết cần khác biệt với tất cả những thẻ meta khác.
  5. Thẻ meta description cần chứa từ khóa và từ khóa nên in đậm để thu hút sự chú ý.
  6. Viết thẻ meta theo kiểu liệt kê thông tin liên quan và quan trọng chứ không nên nhồi nhét thông tin hay từ khóa.

Giới thiệu về filesystem storage trong Laravel

Laravel Storage

Laravel cung cấp cho ta một lớp abstraction filesystem mạnh mẽ do sử dụng package Flysystem tạo bởi Frank de Jonge. Tích hợp Flysystem vào Laravel với cách sử dụng rất đơn giản để giao tiếp với các local filesystem, Amazon S3, và Rackspace Cloud Storage. Thậm chí còn có thể switch các storage một cách dễ dàng sử dụng chung API.

Lợi ích của Laravel storage:

- Việc lưu trữ các file sẽ tốn rất nhiều tài nguyên và băng thông trên server, giải pháp đưa ra là lưu trữ trên các server bên ngoài nên Laravel Storage được tích hợp hỗ trợ lưu trữ file trên server ngoài như Amazon S3.

- Đơn giản hóa trong việc thiết lập các tùy chon.

Cấu hình (Config):

File cấu hình được đặt tại "config/filesystems.php"  và được thiết lập sẵn như sau.

    /*
    |--------------------------------------------------------------------------
    | Default Filesystem Disk
    |--------------------------------------------------------------------------
    */

    'default' => env('FILESYSTEM_DRIVER', 'local'),

    /*
    |--------------------------------------------------------------------------
    | Default Cloud Filesystem Disk
    |--------------------------------------------------------------------------
    */

    'cloud' => env('FILESYSTEM_CLOUD', 's3'),

    /*
    |--------------------------------------------------------------------------
    | Filesystem Disks
    |--------------------------------------------------------------------------
    */

    'disks' => [

        'local' => [
            'driver' => 'local',
            'root' => storage_path('app'),
        ],

        'public' => [
            'driver' => 'local',
            'root' => storage_path('app/public'),
            'url' => env('APP_URL').'/storage',
            'visibility' => 'public',
        ],

        's3' => [
            'driver' => 's3',
            'key' => env('AWS_KEY'),
            'secret' => env('AWS_SECRET'),
            'region' => env('AWS_REGION'),
            'bucket' => env('AWS_BUCKET'),
        ],

    ],

 

 Với Local Driver

Khi thao tác tới file sẽ tương tác tới thư mục root được khai báo trong file, giá trị mặc định được trỏ tới storage/app. Do đó với đoạn code sau file sẽ được lưu trong storage/app/file.txt:

    Storage::disk('local')->put('file.txt', 'Contents');

Với config driver là S3 hoặc Rackspace cần cài đặt các package như yêu cầu thông qua composer

  • Amazon S3: league/flysystem-aws-s3-v3 ~1.0
  • Rackspace: league/flysystem-rackspace ~1.0

Cấu hình cho FTP Driver

Mặc định FTP driver không được cấu hình mặc định trong filesystems.php. Bạn có thể sử dụng ví dụ cấu hình dưới đây như Laravel Docs:

    'ftp' => [
		'driver'   => 'ftp',
		'host'     => 'ftp.example.com',
		'username' => 'your-username',
		'password' => 'your-password',

		// Optional FTP Settings...
		// 'port'     => 21,
		// 'root'     => '',
		// 'passive'  => true,
		// 'ssl'      => true,
		// 'timeout'  => 30,
	]

Cấu hình cho Rackspace Driver

Cũng giống như FTP, Rackspace driver cũng không được config sẵn trong file filesystems.php.

Các bạn có thể tham khảo cấu hình sau:

    'rackspace' => [
		'driver'    => 'rackspace',
		'username'  => 'your-username',
		'key'       => 'your-key',
		'container' => 'your-container',
		'endpoint'  => 'https://identity.api.rackspacecloud.com/v2.0/',
		'region'    => 'IAD',
		'url_type'  => 'publicURL',
	]

Để sử dụng thư việc Storage các bạn đừng quên khai báo thư viện:

use Illuminate\Support\Facades\Storage;

Sau khi khai báo thư viện các bạn có thể tương tác với các disk đã được cấu hình.

	$disk = Storage::disk('local');
	// or
	$disk2 = Storage::disk('s3');

 

Giới thiệu các hàm cơ bản:

  • get(): Được dùng để lấy nội dung của một file:
$contents = Storage::get('file.txt');
  • exists(): Kiểm tra sự tồn tại của 1 file:
$exists = Storage::disk('local')->exists('file.txt');
  • url(): Để lấy URL của file. Nếu bạn sử dụng local driver, nó sẽ tự động thêm vào "/storage" cho path và trả về một relative URL của file. Nếu bạn sử dụng s3 driver, URL đầy đủ sẽ được trả về.

Chú ý: Khi sử dụng local driver, hãy chắc chắn tạo một symbolic link tại public/storage trỏ tới thư mục storage/app/public.

$url = Storage::url('file.txt');
  • size(): Trả về kích thước của file, đơn vị là bytes:
$size = Storage::size('file.txt');
  • lastModified(): Trả về giá trị UNIX timestamp của lần cuối cùng file bị thay đổi:
$time = Storage::lastModified('file.txt');
  • put(): Có thể được dùng để lưu file lên disk. Ta cũng có thể truyền một PHP resource cho hàm put, nó sẽ sử dụng stream của Flysystem. Bạn nên sử dụng stream khi phải làm việc với file lớn:
Storage::put('file.txt', $contents);
Storage::put('file.txt', $resource);
  • copy(): Dùng để copy một file đang tồn tại sang một vị trí mới trên disk:
Storage::copy('old/file.txt', 'new/file.txt');
  • move(): Dùng để đổi tên hay di chuyển một file đang tồn tại tới vị trí mới:
Storage::move('old/file.txt', 'new/file.txt');
  • prepend(): Thêm nội dung vào đầu 1 file:
Storage::prepend('file.txt', 'Prepended Text');
  • append(): Chèn thêm nội dung vào cuối file:
Storage::append('file.txt', 'Appended Text');
  • delete(): Xoá file khỏi disk, bạn có thể xóa 1 file hoặc 1 mảng các file:
Storage::delete('file.txt');
Storage::delete(['file1.txt', 'file2.txt']);
  • files(): Trả về một mảng các files trong một thư mục.
$files = Storage::files($directory);
  • allFiles(): Sẽ lấy danh sách tất cả các file trong một thư mục bao gồm các thư mục con:
$files = Storage::allFiles($directory);
  • directories(): Sẽ trả về một mảng gồm tất cả các thư mục bên trong một thư mục.
$directories = Storage::directories($directory);
  • allDirectories(): Hàm này lấy về danh sách tất cả các thư mục trong một thư mục và các thư mục con của nó:
$directories = Storage::allDirectories($directory);
  • makeDirectory(): Sẽ tạo một thư mục mới, bao gồm các thư mục con cần thiết:
Storage::makeDirectory($directory);
  • deleteDirectory(): Xoá một thư mục, bao gồm tất cả các file của nó:
Storage::deleteDirectory($directory);
  • download(): Tải file về máy tính.
return Storage::download('file.jpg');

Mong rằng qua bài này sẽ giúp các bạn hiểu hơn về Storage trong Laravel. Các bạn có thể xây dựng một hệ thống quản lý các media của mình trên server một cách dễ dàng hơn. Chúc các bạn thành công trong lập trình Laravel.

Ngụy Kim Hưng